Я улавливаю inputMismatchException в моем основном методе и хочу, чтобы мой цикл do-while снова повторялся после исключения. Я даже закодировал явный оператор продолжения, но это не сработало. Как я могу это сделать?Резюме цикла после пойманного исключения
public class AddressBookApp {
public static void main(String[] args) {
AddressBook abook = new AddressBook();
System.out.println("Welcome to the Address Book Application\n");
Scanner sc = new Scanner(System.in);
int menuNumber = 4;
loop:
do {
abook.menu();
try{
menuNumber = sc.nextInt();
System.out.println();
if (menuNumber < 1 || menuNumber > 4){
System.out.println("Please enter a valid menu number\n");
} else if (menuNumber == 1) {
abook.printEntries();
} else if (menuNumber == 2) {
abook.addEntry();
} else if (menuNumber == 3) {
abook.removeEntry();
} else {
System.out.println("Thanks! Goodbye.");
sc.close();
return;
}
} catch (InputMismatchException ime) {
System.out.println("Please enter an integer");
sc.next();
continue loop;
}
} while (menuNumber != 4);
sc.close();
}
}
Да, вы правы. Я помещаю это там, прежде чем вставить try-catch, чтобы предотвратить бесконечный цикл. – Keven
menuNumber объявляется вне цикла, а затем увеличивается на вызов sc.nextInt, поэтому он (теоретически) увеличивается. Проблема, которую я вижу и описываю ниже, заключается в том, что забрасывается исключение типа, отличного от того, что он ловит. – CBass
Извините, похоже, что он изменил код после вашего комментария и до моего. – CBass