2010-06-30 63 views
1

我測試了下面的代碼,它可能會打印0和2,但它打印1和1爲什麼?關於循環和中斷命令的問題

public class break_command { 


    public static void main(String[] args) { 
     for (int i=0;i<10;i++){ 
      for (int j=1;j<10;i++){ 
       if ((i+j) %2==0){ 
        System.out.println("i "+ i +" j " +j); 
        break; 
       } 


      } 
      break; 
     } 
    } 

} 

result// 
i 1 j 1 
BUILD SUCCESSFUL (total time: 0 seconds) 
+1

還要注意,Java中的約定是類以上駱駝大小寫命名,所以您的類通常會被稱爲「BreakCommand」。儘管你可以使用任何你喜歡的名字,但是如果你堅持使用這些約定,你的代碼對於其他人來說會更容易理解。 – 2010-06-30 14:32:34

+0

@Andrzej個人而言,我開發時使用兩個ide。我使用Eclipse進行真正的開發,並且使用JGrasp(超輕量級)來測試一些微小的東西。有一半時間我最終得到了「公共班級foo」或「班級bob」。這是我會用它的那種東西。這不像他正在創建'BreakCommand'對象或任何東西。 – corsiKa 2010-06-30 14:43:45

+0

@davit我建議使用調試器逐步完成這個過程,並逐步觀察變量的變化。當他們沒有改變你認爲他們應該的方式時,你所在的路線會跳出你的原因。 – corsiKa 2010-06-30 14:44:47

回答

4

是行:

for (int j=1;j<10;i++){ 

應該是J ++不是我++?

否則就意味着在第一次迭代:

if ((i+j) %2==0){ 

爲真。

+0

是的抱歉,我寫錯了謝謝 – 2010-06-30 14:31:10

2

你正在迭代你的第二個循環,而不是j。所以最初,在第一個循環中,我的值爲0.然後當你進入第二個循環時,它增加到1.在這一點上,我的值爲1,j的值爲1;他們的總和是平均的,所以它將它們打印出來並從內部循環中跳出,從外部循環中跳出來,然後就完成了。