2017-10-13 53 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循环。 在我诚实的意见下,我会要求在下次询问这些问题时,在适当的位置检查所有变量和打印行。