【发布时间】:2018-04-03 20:08:24
【问题描述】:
这是本题主类的方法。
当用户为请求的信息输入非数字值时,我遇到了问题。
示例)
Enter a distance in meters: jam
Incorrect value. Please select a distance in meters greater than zero.
Enter a distance in meters: Incorrect value. Please select a distance greater than zero.
Enter a distance in meters:
这是调用此方法时发生的输出。我该如何纠正这个问题?
public static double validDistance (String prompt,
double minValue) {
Scanner keyboard = new Scanner (System.in);
double value;
String errorMessage = "Incorrect value. Please select a distance in "
+ "meters greater than zero\n";
// Protects distance input from incorrect value
// (non-numeric or too low)
do {
System.out.print(prompt);
if (keyboard.hasNextDouble()) {
value = keyboard.nextDouble();
if (value <= minValue) {
System.out.println(errorMessage);
} else {
break; // Exit loop
}
} else {
System.out.println(errorMessage);
keyboard.nextLine(); // Clears buffer
}
} while (true);
return value;
}
【问题讨论】:
-
需要循环提示输入。
-
将
keyboard.nextLine();移到else之外。
标签: java loops if-statement buffer do-while