2015-02-23 173 views
-3

我认为我的代码是正确的,但是当我运行它时,我的输出语句在底部不会产生。我要求键盘输入任意数字,然后输入-1结束。我的while循环包括添加数字,创建总和,以及给出偶数的数量。当我测试我的代码时,我一直在输入1,2,3,4,希望能够产生4个总数。 2甚至是10的总和。为什么'我的代码没有进入打印语句?如何关闭while循环

public static void main(String[] args) { 
    Scanner sc = new Scanner (System.in); 
    System.out.println("Please enter a number. Enter -1 to stop program."); 
    int num = sc.nextInt(); 
    int counter = 0; 
    int even = 0; 
    int sum = 0; 
    while (num != -1) 
    { 
     counter += 1; 
     sum += num; 
     if (num%2 == 0) 
     { 
      even +=1; 
     } 

    } 
    System.out.println("You have entered "+ counter + "number(s)"); 
    System.out.println("You have entered "+ even + "even numbers"); 
    System.out.println("The sum for the numbers you entered is "+ sum); 

} 
+2

你永远不会修改'num'的值,因此如果'num!= -1',这将是一个无限循环。 – rcs 2015-02-23 03:34:50

+0

这是否意味着我需要在我的while循环中询问扫描仪是否有另一个int? – JavaBeginner 2015-02-23 03:35:37

+0

是的,你需要让扫描仪的另一个int来输入一个新的值。你可以在while循环的最后部分做到这一点。 – rcs 2015-02-23 03:37:10

回答

1

你永远不会再次获得输入,因此循环无限运行。你需要再次获得价值。

while (num != -1) 
{ 
    ... 

    num = sc.nextInt(); 
} 
+0

知道了谢谢! – JavaBeginner 2015-02-23 03:37:25

+0

我想说但我不能接受一个答案,直到10分钟起来 – JavaBeginner 2015-02-23 03:40:42

+0

@JavaBeginner谢谢! – Dando18 2015-02-23 03:41:19

0

在进入循环之前设置num。

那么,什么时候在while循环中改变了num?它没有。这就是为什么你的代码不会退出循环。

我建议把这个

num = sc.nextInt(); 

内循环。