2016-05-03 70 views
-5

我不明白在代碼中嵌套的for循環如何工作以及break的作用是什麼?嵌套循環和中斷如何在Java中工作?

package demo; 
import java.util.Scanner; 
public class Demo { 

public static void main(String[] args) { 
    int i,j,k; 

    for(i=1; i<= 5;i++) 
    { 
     for(j=1;j<=i; j++){ 

      for(k=1;k<=j;k++) 
      { 
      System .out.print(k); 
      break; 
      } 
    } 
    System.out.println(); 
    } 
} 
+3

看起來像這樣可以很好地調試代碼... –

+0

[Java中斷語句](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html) – CubeJockey

+2

所以...你想知道什麼是循環?而「break」聲明呢?這些都很容易研究和測試。這段代碼實際上表現的方式與你期望的不同? – David

回答

1

讓我們打破這種下來,開始與第一for循環:

for(i=1; i<= 5;i++) 

賦值語句,i=1,只是說,i等於1。條件語句i<=5指出,只要i小於或等於5,循環就應運行。在每次循環運行之前檢查該語句。最後一條語句i++表示在每次循環運行後i增加1

如果有幫助,這也可以代表以下方式:

int i = 1; 
if (i<=5) { 
    //execute code here 
    i = i+1; 
    //return to if statement 
} 

(當然,實際上不能編碼這種方式,因爲是在Java中沒有goto命令的唯一可行途徑。替換for循環使用純if語句塊。將遞歸方法,它是沒有意義的,遞歸的方法是複雜得多的循環使用中寫的代碼上面的部分。)

現在,什麼break語句它是否會終止最內層的循環。考慮這個例子(爲簡單起見,這僅僅是使用循環名稱,而不實際for聲明僞代碼;試想一下每一個for環路):

LOOP1 { 
    LOOP2 { 
     LOOP3 { 
      // some code here 
      break; 
     } 
    } 
} 

當達到break聲明,LOOP3被終止,即使否則會繼續運行。請注意,此僅終止LOOP3;另外兩個循環將繼續運行。

但是,可以使用break來終止外環。如果代碼是這樣寫的:

LOOP1 { 
    LOOP2 { 
     LOOP3 { 
      // some code here 
      break LOOP1; 
     } 
    } 
} 

LOOP1將被終止;這也會導致其他兩個循環的終止,因爲它們嵌套在LOOP1的內部。