[英]Does a for loop's while section execute each pass or only once in java?
例如,這是恆定的還是每次通過都會改變?
for(int i = 0; i < InputStream.readInt(); i++)
for(int i = 0; // executed once
i < InputStream.readInt(); // executed before each loop iteration
i++ // executed after each loop iteration
) {
....
}
每次執行。 for
語法是用於
int i = 0
while(true)
{
if(!(i < InputStream.readInt()))
{
break;
}
// for body
i++
}
第一部分在循環開始之前執行一次。 在每個循環之前檢查第二部分,如果為true,則執行循環,如果為false,則循環中斷。 最后一部分在每次迭代后執行。
在某些情況下,控制流程圖實際上是概念的最佳圖形表示形式。
http://upload.wikimedia.org/wikipedia/commons/0/06/For-loop-diagram.png
我認為主要的問題是這樣的問題: 不
i < InputStream.readInt();
得到執行每個循環迭代? 是的,它確實。
在這種情況下,它不會更改任何敏感變量,代碼中實際更改的唯一變量是i ,但是InputStream.readInt()
將在每次迭代中運行以進行比較,因此將在InputStream
再次運行readInt()
。
怎么樣呢?
for (int i=0; i < xObj.addOne().parseInt(); i++)
(給定方法addOne返回一個更大的整數的字符串表示形式)
如果我像平常一樣調用xObj.addOne(),我的“檢查”值是否會增加? 是。 並保持遞增到下一個循環迭代嗎? 是。
就像在做
int x = 0;
for (int i=0; i < ++x; i++);
這將永遠不會終止,因為++ x總是大於x(也是i)
一個不平凡的例子呢?
int x = 6;
for (int i=0; i < x--; i++) {
System.out.print(i+" ");
}
輸出
0 1 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.