简单的循环运动

时间:2014-02-21 21:24:49

标签: java loops

我正在学习java并且目前我坚持一个练习,其中我无法理解为什么代码以这种方式表现。我在纸上追踪我的步骤,但我希望答案不同于程序实际上做的。如果有人能解释为什么它做它做的事情

CODE:

System.out.print("Enter an integer: ");
int numb = in.nextInt();

   while (in.hasNextInt())
   {
      System.out.println(numb);
      System.out.print("Enter an integer: ");
      numb = in.nextInt();    
   }

TESTER只输入数字,因此输出应如下所示:

Enter an integer: 5  
- 5 
- Enter an integer: 10 
- 10 
- Enter an integer: 8 
- 8 
- Enter an integer: k
...

但它看起来像这样:

Enter an integer: 5 
- 10 
- 5 
- Enter an integer: -4 
- 10 
- Enter an integer: 8 
- -4 
- Enter an integer: -6
- 8 
- Enter an integer: 11 
- -6 
- Enter an integer: -1 

1 个答案:

答案 0 :(得分:6)

这是因为你过早地使用in.hasNextInt()(或者太晚,取决于你如何看待它):Scanner无法告诉你它是否看到整数,直到之后最终用户输入了一个值。

如果您提示输入一个号码,然后检查hasNextInt,则您的代码不应跳过第二个提示:

System.out.print("Enter an integer: ");
while (in.hasNextInt()) {
    int numb = in.nextInt();    
    System.out.println(numb);
    System.out.print("Enter an integer: ");
}

这也可以防止在第一个条目不是数字的情况下发生异常。