【发布时间】:2020-10-27 21:51:54
【问题描述】:
使用 while 循环提示用户输入 3 个整数来平均它们,当输入不是整数时需要重新提示,所以我决定在输入不是整数时后退一步int,但是当我输入一个非 int 时,就好像它一直处于它不是 int 的状态,并继续重新提示,而不重新检查新的输入。
Scanner scnr = new Scanner(System.in);
String prompt = "Type an integer: ";
int num = 0;
int i = 0;
while (i < 3) {
System.out.print(prompt);
if (scnr.hasNextInt()) {
int input = scnr.nextInt();
num += input;
} else i -= 1;
i += 1;
}
double average = num / 3.0;
System.out.println("Average: " + average);
【问题讨论】:
-
hasNextInt()仅检查下一个标记是否为 int。它没有前进,所以 not-int 仍然存在。当扫描器检查下一次迭代时,它检查相同的令牌。您必须致电next()或nextLine()才能实际获取令牌。 -
它进入条件“它不是一个 int”,因为只有当你已经有一个 int 时你才调用
scnr.nextInt(),并且你永远不会离开你的 while 循环,因为当 i 低于 3并且您没有 int,您将 1 模式减去 i :-1、-2、-3...所以您永远不会离开循环。
标签: java while-loop