我一直坐在这里(尴尬)数小时,试图获得一个do-while循环以接受用户输入,直到输入有效为止,但是当我要尝试使用的布尔值时,我似乎很困惑并退出循环。每当我可以使程序部分工作时,catch异常最终都会无限地重复执行。任何帮助将不胜感激。
Scanner scnr = new Scanner(System.in);
double wallHeight = 0.0;
boolean valid = false;
// Implement a do-while loop to ensure input is valid
// Prompt user to input wall's height
do {
try {
System.out.println("Enter wall height (feet): ");
wallHeight = scnr.nextDouble();
valid = false;
if (wallHeight <=0) {
throw new Exception ("Invalid Input");
}
}
catch (Exception e) {
System.out.println("Invalid Input");
}
}while (!valid);
[假设输入为valid
开始(并在循环的每次迭代中将valid
设置为true
)。仅在遇到异常(希望是您提出的异常)时才将valid
设置为false
。
do {
valid = true;
try {
System.out.println("Enter wall height (feet): ");
wallHeight = scnr.nextDouble();
if (wallHeight <= 0) {
throw new Exception("Invalid Input");
}
} catch (Exception e) {
valid = false;
System.out.println("Invalid Input");
}
} while (!valid);
请注意,您在这里没有出现需要例外,为
do {
valid = true;
System.out.println("Enter wall height (feet): ");
wallHeight = scnr.nextDouble();
if (wallHeight <= 0) {
System.out.println("Invalid Input");
valid = false;
}
} while (!valid);
也将起作用。