2017-10-13 54 views
-7

在我的程序中有一個while循環會無限循環,因爲for循環不會運行兩次。我想找到,將有來自輸入4和組合的數量,這裏是我的代碼:for循環不會在while循環中運行java

Scanner scan = new Scanner(System.in); 
int n = scan.nextInt(); 

ArrayList<Integer> taxi = new ArrayList<Integer>(); 
for (int i=0; i<n; i++) { 
    taxi.add(scan.nextInt()); 
} 

int i = 0; 
int total=0; 
int tax=0; 
int num = 0; 
while (num<n) { 
    i=0; 
    for (i=0; i<n; i++) { 
    if (total+taxi.get(i)<=4) { 
     total+=taxi.get(i); 
     System.out.println(total); 
     num++; 
    } 
    } 
    tax++; 
} 
System.out.println("Taxis= " + tax); 
+4

現在是學習如何使用調試器的好時機。真。您需要遍歷每行代碼,檢查變量值並查看行爲。學習調試與學習語言一樣重要。 – OldProgrammer

+0

或者放幾個''System.out.println()';-) – piechuckerr

+0

或者你從if條件中刪除num ++ ...如果條件不成立,它不會增加,它的遊戲結束...... – Totoc1001

回答

0

看,雖然你的代碼看起來您​​的問題就在於你的一些變量的使用,如我多次導致代碼不能編譯。嘗試使用更好的名稱或更多獨特的名稱,以防止將來出現這些問題。以及我也建議不要經常以這種方式清理所有變量。最後,你的問題與你使用變量n有關,因爲它仍然是一個固定的數字,它不會在while循環中改變,這意味着它總會是真實的。解決這一問題的最佳方法是利用

break; 

命令退出while循環或使用一個計數循環像for循環。 在我誠實的意見下,我會要求在下次詢問這些問題時,在適當的位置檢查所有變量和打印行。