Начните с предположения, что вводом является valid
(и установите valid
в true
на каждой итерации l oop). Устанавливайте 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);
также будет работать. Конечно, это предполагает, что пользователь вводит только действительные значения double
(s). Если вам нужно обработать произвольный ввод, вы должны проверить, есть ли double
, прежде чем пытаться использовать его (и вы должны использовать все, что не является double
, или у вас есть бесконечное число l oop). Мол,
do {
valid = true;
System.out.println("Enter wall height (feet): ");
if (scnr.hasNextDouble()) {
wallHeight = scnr.nextDouble();
if (wallHeight <= 0) {
System.out.println("Invalid Input");
valid = false;
}
} else {
System.out.println("Invalid Input " + scnr.nextLine());
valid = false;
}
} while (!valid);