【发布时间】:2015-12-23 13:40:52
【问题描述】:
boolean loop = false;
double numberOfStudents;
System.out.print("Enter a number: ");
if ((scnr.nextLine().trim().isEmpty()) ) {
loop = true;
}
while (loop) {
System.out.println("Enter a number");
if (scnr.hasNextDouble() ){
System.out.println("Loop has stopped");
numberOfStudents = scnr.nextDouble();
loop = false;
}
}
System.out.println("You're outside the loop!");
我试图让程序说“输入一个数字”,直到用户输入一个实际数字(没有空格、字母或符号)。当用户输入一个数字时,它会将numberOfStudents 设置为等于该数字并跳出循环。
但是如果你按两次回车,它就不会迭代。它只显示一次“输入数字”。
循环逻辑有什么问题?为什么在获取有效输入之前它不循环?
【问题讨论】:
-
我认为这不是一种方便的循环方式。
-
当用户不提供双精度时,没有其他要求再次询问
-
一开始不检查输入是否为数字
-
空行不是
scnr.hasNextDouble()的有效令牌,因此它仍在等待...
标签: java while-loop java.util.scanner