3 回答

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
我將使用稍微不同的類(lèi)比,因?yàn)楹芏啻鸢付紴槟峁┝苏_的信息。
數(shù)組只是一個(gè)包含值的連續(xù)框列表。想象一下這是一個(gè)房屋列表,每個(gè)房屋編號(hào)從 0(Java 中的數(shù)組像許多其他編程語(yǔ)言一樣從 0 開(kāi)始,而不是 1)到n
(在您的情況下是 2)。
因此,如果您是從每所房子收集捐款的人,您將從第一所房子 0 開(kāi)始,然后進(jìn)行到下一個(gè)房子 1,然后到下一個(gè)房子 2。您將跟蹤您現(xiàn)在正在訪(fǎng)問(wèn)的房子,以便您還知道下一個(gè)是哪個(gè),這就是整數(shù)變量i
正在做的事情。
打印numbers[i]
不會(huì)形成循環(huán),就像敲第一間房子并不意味著你要敲第二間房子一樣。
該for
循環(huán)會(huì)跟蹤您接下來(lái)需要訪(fǎng)問(wèn)的門(mén)牌號(hào)。它通過(guò)它在同一行中的 3 個(gè)語(yǔ)句來(lái)完成:
for(int i = 0; i < number.length; i++)
第一個(gè)語(yǔ)句是說(shuō)從第一個(gè)房子 ( int i = 0
) 開(kāi)始。你可以從你喜歡的任何地方開(kāi)始。
第二個(gè)語(yǔ)句是說(shuō),無(wú)論有多少房子,你都想上到最后一個(gè)房子。( i < number.length
). 這字面意思是只要i
小于數(shù)組的大小就保持循環(huán)。您可能會(huì)問(wèn)為什么不是 condition <=
。這是因?yàn)槲覀儚?開(kāi)始,所以長(zhǎng)度(數(shù)組的大小)將是最后一個(gè)房子的數(shù)字+1。在你的情況下,length = 2 + 1
.
第三個(gè)陳述,是什么讓你搬到下一個(gè)房子。i++
是說(shuō)的簡(jiǎn)寫(xiě)i = i + 1
。該語(yǔ)句在循環(huán)的每次迭代之后發(fā)生。
所以基本上你的 for 循環(huán)首先將 i 初始化為 0,檢查條件(第二個(gè)語(yǔ)句),如果條件滿(mǎn)足,則進(jìn)行第一次迭代,然后它最終遞增i
,如果仍然滿(mǎn)足第二個(gè)條件,則開(kāi)始另一次迭代。重復(fù)此循環(huán),直到for
表達(dá)式的第二個(gè)語(yǔ)句不再為真。
最后所有的numbers[i]
方法是,由于numbers
是一個(gè)數(shù)組,[ ]
操作符訪(fǎng)問(wèn)指定索引處的值。所以這就像用數(shù)字敲敲房子,i
看看誰(shuí)住在那里。輸入值以System.out.println()
在屏幕上打印該值。

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
以下是 for 循環(huán)執(zhí)行方式的細(xì)分(源自此認(rèn)證學(xué)習(xí)指南)
名稱(chēng)如下:
for(initialization code;
boolean expression;
update statements){
body
}.
for 循環(huán)的部分按以下順序執(zhí)行:
初始化代碼
如果布爾表達(dá)式為真,則執(zhí)行主體,否則退出循環(huán)
身體執(zhí)行
執(zhí)行更新語(yǔ)句
返回第 2 步
因此,當(dāng)應(yīng)用于您的示例時(shí),我們可以說(shuō):
運(yùn)行初始化:
int i = 0
迭代 1:
if(i < number.length) // -> if(0 < 3)
//run body
i++ //i becomes 1
//return to step 2 (new iteration)
迭代 2:
if(i < number.length) // -> if(1 < 3) //i was incremented to 1
//run body
i++ //i becomes 2
//return to step 2 (new iteration)
迭代 3:
if(i < number.length) // -> if(2 < 3) //i was incremented to 2
//run body
i++ //i becomes 3
迭代 4(未運(yùn)行):
//return to step 2 (new iteration)
if(i < number.length) // -> if(3 < 3) -> condition not met
//condition not met, stop the loop
更具體地說(shuō),我不明白我是如何表示數(shù)組的內(nèi)容的
正如您在上面看到的,每次循環(huán)體執(zhí)行完畢時(shí),都會(huì)執(zhí)行更新語(yǔ)句,這會(huì)使i變量遞增,從而允許訪(fǎng)問(wèn)數(shù)組的不同索引。
這樣做是明智的,如果您將更新語(yǔ)句更改為i += 2,則將跳過(guò)數(shù)組的某些索引。

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
數(shù)組的值由語(yǔ)法取出
numbers[index];
數(shù)組索引從 0 開(kāi)始,然后是 1 下一個(gè) 2 .... 所以為了檢索你需要的第一個(gè)元素
numbers[0];
同時(shí)在 for 循環(huán)中,您創(chuàng)建了一個(gè)名為i. 請(qǐng)注意,在迭代時(shí),由于 , 的值i增加了 1 i++。
所以在你的 for 循環(huán)中會(huì)發(fā)生這種情況。
numbers [0];
numbers[1];
numbers[2];
我想你不明白的是for循環(huán)是如何工作的。請(qǐng)閱讀,
Java 中的 For 循環(huán)示例
根據(jù)那篇文章,
for(initialization; condition ; increment/decrement){
statement(s);
}
示例(這不是 Java,它是 JavaScript,但 for 循環(huán)的工作方式相同;javascript 不是 爪哇不要誤會(huì)。我只想向您展示一個(gè)關(guān)于i價(jià)值如何增加的工作示例。):
var i;
for (i = 0; i < 10; i++) {
console.log("i = " + i);
}
添加回答
舉報(bào)