2015-05-06 31 views
-1

,所以我知道,你可以有一個每個參數中的多個語句for循環,例如:Java進行循環終止參數

for(int i=0, int j=0; i<10 , j<14; i++, j=j+2){} 

,但作爲一個「和」聲明處理的第二個參數或「或者」聲明?當「j」變得大於14時它會停止,還是繼續下去,直到「i」變得大於10?

+5

您的代碼段做不編譯。 [docs](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html)是一個很好的閱讀。 –

+1

第二個參數必須是條件的,'i <10,j <14'不是條件的。 –

+1

雖然這種事情發生在C中,但不是Java。在Java中,您將收到編譯時錯誤。然而,在C語言中,只有逗號分隔列表中的最右邊的表達式「計數」,儘管所有都被計算... – BadZen

回答

2

這不會編譯。第二個參數不能有逗號分隔列表。這將編譯:

for(int i=0, j=0; i<10 && j<14; i++, j=j+2){} 
+0

這對我來說更有意義。非常感謝! – 1234567power

1

終止參數必須是一個邏輯運算符,i<10 && j<14是可以接受的,i<10 , j<14不會。

0

這將清除一切。運行程序
i和j是2個變量,它們可以使用,具體取決於您要如何使用它。 如果你不改變j的值,那麼它可以用作終止符。

public class TestProgram { 
    public static void main(String[] args){ 

      for (int i = 0, j = 1, k = 2; i < 5; i++) { 
       System.out.println("I : " + i + ",j : " + j + ", k : " + k); 
      } 
      /* 
      * Please note that the variables which are declared, should be of same 
      * type as in this example int. 
      */ 

      // THIS WILL NOT COMPILE 
      // for(int i=0, float j; i < 5; i++); 

     } 
+0

這根本不是答案**。 –

+0

該程序解釋了他如何在for循環中使用多個參數。第二個參數可以作爲終止條件 –

+0

@LuiggiMendoza你甚至可以運行我的程序! –

0

JLS 14.14.1 The basic for Statement

BasicForStatement:

for ([ForInit] ; [Expression] ; [ForUpdate]) Statement 

第一部分時,[ForInit]必須是一個變量的聲明或一組的相同的變量類型:

如果ForInit代碼是語句表達式的列表(第14.8節),則表達式按從左到右的順序進行評估;它們的值(如果有的話)被丟棄。

的第二部分,[表達式]必須是boolean

表達必須有類型booleanBoolean編譯時錯誤發生

因此,您當前的for循環聲明未能滿足這些條件。讓我們來看看爲什麼:

for(
    int i=0, int j=0; //you cannot declare a list of variables like this 
         //you can test this by moving this piece of code 
         //out of the for loop 
    i<10 , j<14; //this expression doesn't return a boolean nor a Boolean 
    i++, j=j+2 //this one is right 
    ) { 
    //... 
} 

所以,正確的方式來聲明這個for循環將是:

for(
    int i=0, j=0; 
    i<10 && j<14; 
    i++, j=j+2 
    ) { 
    //... 
} 

其中,在單一的控制線爲:

for(int i=0, j=0; i<10 && j<14; i++, j=j+2) { 
    //... 
} 
+0

酷!我會盡量在下次回答時更加詳細。 –