簡體   English   中英

for循環的while部分在Java中執行每次傳遞還是僅執行一次?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM