2014-06-23 61 views
-1

爲什麼這項工作布爾在for循環

for(int i = 10; i > 0; i--) { 
     System.out.println("printing " + i); 
    } 

,但不爲呢?它是由編譯器所接受,但運行

for(int j = 10; j == 1; j--) { 
    System.out.println("printing " + j); 
} 

我,如果這是一個愚蠢的問題真的很抱歉時候,它不會打印出任何東西:/ 它應該是一樣的布爾,不是嗎?

回答

3

因爲你正在運行循環,而j等於1;但它與10啓動你想會是這樣什麼:

for(int j = 10; j != 1; j--) { 
    System.out.println("printing " + j); 
} 

在這裏,你運行循環,而j等於1

編輯:原始失敗循環可能是自動轉換到以下while循環:

{ 
    int j = 10; 
    while(j == 1) { 
     System.out.println("printing " + j); 
     j--; 
    } 
} 

這說明更清楚,爲什麼它從來沒有跑。

+0

啊,現在我明白了,第二個表達式指運行時的表情依然如此,沒有一個表達式來表示,其中環將停止。謝謝:D – Rei

+0

@Rei正確。一個非常重要的區別。 – blalasaadri

1
for(int j = 10; j == 1; j--) {...} 

在第一個迭代j==110==1將是假,循環將打破。

for(int j = 10; j != 0; j--) {...}這將起作用。

1

一般語法是:

for (intialization; condition; iteration/recursion) 
{ 
    // Loop entered if condition evaluates to true. 

    // At end of loop, recursion condition updated and loop continues based on condition 

}// Loop terminates when condition evaluates to false; 

在你的情況,

for(int j = 10; j == 1; j--) { 
    System.out.println("printing " + j); 
} 

// You have initialized j=10, but since j!= 1, the loop is not being entered. 

要使其工作,你更換條件J = = 1到j> = 1

for(int j = 10; j >= 1; j--) { 
    System.out.println("printing " + j); 
} 
2

首先,初始化完成(它僅執行一次,在第一次迭代):

int j = 10 

然後,該終止表達式進行求值:

j == 1 

由於j是10,j == 1將是10 == 1,這是false

循環終止表示循環必須完成,所以循環的是執行從未

摘要:如果終止表達是true,該循環體將被執行。如果它是false,則不會執行正文並且循環結束。

+0

我不明白,如果終止表達式是真的,那麼循環會被終止正確?如果表達式仍然是錯誤的,爲什麼循環體永遠不會被執行? – Rei

+0

如果*終止*表達式爲「真」,循環的主體將被執行。如果它是'false',則主體不會被執行,並且循環結束。 – Christian

+0

我現在得到它,謝謝xD – Rei

0

您的問題是有關循環

在上for循環你給喜歡我的循環範圍是旋轉10次基本的問題,反指0至一倍打印結果 一樣,

打印10 印刷9 印刷8 。 。 。 。 打印1

最後的循環不會打印任何東西堂妹着滿足的條件Ĵ== 1

希望你明白..

+3

No Second Loop不會打印任何東西。 –

+0

是的!你是正確的第二循環不會打印任何東西因爲變量j不能滿足條件... –

0

你在你的中止條件第二循環有問題。它應該像

for(int j = 10; j > 1; j--) { 
    System.out.println("printing " + j); 
} 
1

for循環條件永遠不會是真實的,因爲你開始與j = 10和條件j == 1這將永遠是假的。請嘗試類似的方式。

for(int j = 10; j != 1; j--){ 
    system.out.println("Printing: " + j) 
} 

OR

for(int j = 10; j > 1; j--){ 
    system.out.println("Printing: " + j) 
}