即时通讯学习java和目前我坚持一个练习,其中我无法理解为什么代码表现这种方式.我在纸上追踪我的步骤,但我希望答案不同于程序实际上做的.如果有人能解释为什么它做它做的事情
码:
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();
}
Run Code Online (Sandbox Code Playgroud)
TESTER只是输入数字,因此输出应如下所示:
Enter an integer: 5
- 5
- Enter an integer: 10
- 10
- Enter an integer: 8
- 8
- Enter an integer: k
...
Run Code Online (Sandbox Code Playgroud)
但它看起来像这样:
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
Run Code Online (Sandbox Code Playgroud)
这是因为你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: ");
}
Run Code Online (Sandbox Code Playgroud)
这也可以防止在第一个条目不是数字的情况下发生异常.