Java 简单的while循环练习
我正在学习java,目前我正在做一个练习,我无法理解为什么代码会以这种方式运行。我在纸上追踪我的步骤,但我希望得到和程序实际不同的答案。如果有人能解释为什么它会这样做 代码: 测试仪只是输入数字,所以输出应如下所示:Java 简单的while循环练习,java,loops,Java,Loops,我正在学习java,目前我正在做一个练习,我无法理解为什么代码会以这种方式运行。我在纸上追踪我的步骤,但我希望得到和程序实际不同的答案。如果有人能解释为什么它会这样做 代码: 测试仪只是输入数字,所以输出应如下所示: Enter an integer: 5 - 5 - Enter an integer: 10 - 10 - Enter an integer: 8 - 8 - Enter an integer: k ... Enter an integer: 5 - 10 -
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
但看起来是这样的:
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
这是因为您在.hasNextInt()中使用
太快(或太晚,取决于您如何看待它):直到最终用户输入值后,扫描仪才能告诉您是否看到整数
如果提示输入一个数字,然后检查hasnetint
,则代码不应跳过第二个提示:
System.out.print("Enter an integer: ");
while (in.hasNextInt()) {
int numb = in.nextInt();
System.out.println(numb);
System.out.print("Enter an integer: ");
}
这还可以防止在第一个条目不是数字的情况下出现异常。基本上,hasNextInt
会向前看,看下一个nextInt
是否可能;它不会回头看前一个nextInt
是否有效。谢谢你花时间回答我,但不知怎么的,我仍然没有完全理解它,也许我看错了。扫描仪的输入是否在int numb=in.nextInt()行中“扫描”?如果是这样,那么如何测量第一个循环条件,如果此时扫描仪尚未扫描用户输入,并且不知道它是否为int。@user3338991是否尝试运行此代码?你得到了什么结果?我得到了正确的结果,谢谢你,但是当我试图学习java时,我试图理解为什么,这让我暂时无法理解。例如,如果我输入字母而不是int,为什么这个代码不打印它,scann和print在循环中,它们之间没有条件。也许我不理解java执行的顺序?请你把那个密码一步一步地说出来好吗?感谢you@user3338991虽然nextInt
和打印之间没有条件,但扫描仪已经知道nextInt
会成功,因为它知道循环条件成立。当你调用hasnetint
并得到true
时,扫描仪已经有了int
,它只是没有给你,因为你没有问。循环中的条件虽然
循环是真实条件,但在第一次输入之前会对其进行检查,并且每次控件返回到循环顶部时都会对其进行检查。所以你可以用纸和笔来回溯,提示,检查,扫描,打印,提示,检查,扫描,打印,提示,等等。