【发布时间】:2020-06-13 07:31:21
【问题描述】:
我正在尝试验证用户输入的学校作业,其中负数或除双精度外的任何内容都会导致循环重试。其余代码对输入进行了一些简单的算术运算,这些都是功能性的,所以我没有包含它,但这是我到目前为止的输入验证。现在输入一个负数可以做我想做的事情,但是输入一个不同的字符会导致
的无限循环“空”
输入墙高(英尺):"
当负数异常按预期工作时,为什么不抛出 !scnr.hasNextDouble() 异常,为什么它会无限重复?非常感谢我能在这方面得到任何帮助,谢谢。
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
double wallHeight = 0.0;
double wallWidth = 0.0;
double wallArea = 0.0;
double gallonsPaintNeeded = 0.0;
final double squareFeetPerGallons = 350.0;
// Implement a do-while loop to ensure input is valid
do {
try {
System.out.println("Enter wall height (feet): ");
wallHeight = scnr.nextDouble();
if (wallHeight <= 0) {
throw new Exception("Enter positive number");
}
else if (!scnr.hasNextDouble()) {
throw new Exception("Invalid input.");
}
}
catch(Exception excpt){
System.out.println(excpt.getMessage());
}
}while(wallHeight <= 0 || !scnr.hasNextDouble());
【问题讨论】:
-
欢迎来到 Stack Overflow。 在询问之前您应该搜索现有的Q/As...例如@987654321 @。另请注意,此处的社区不会取代其他出色的在线资源,例如教程。作为参考,请查看How to Ask a Good Question。
标签: java validation try-catch do-while