在这里编程初学者,我遇到了错误/异常处理的问题,因为我不知道怎么做。对于我的菜单系统(下面的代码),我希望它在输入1-6以外的任何内容时提醒用户,是否尝试捕获最佳方法?有人能告诉我应该如何实施吗?
do
if (choice == 1) {
System.out.println("You have chosen to add a book\n");
addBook();
}
///load add options
else if (choice == 2) {
System.out.println("Books available are:\n");
DisplayAvailableBooks(); //call method
}
////load array of available books
else if (choice == 3) {
System.out.println("Books currently out on loan are:\n");
DisplayLoanedBooks(); //call method
}
//display array of borrowed books
else if (choice == 4) {
System.out.println("You have chosen to borrow a book\n");
borrowBook(); //call method
}
//enter details of book to borrow plus student details
else if (choice == 5) {
System.out.println("What book are you returning?\n");
returnBook(); //call method
}
//ask for title of book being returned
else if (choice == 6) {
System.out.println("You have chosen to write details to file\n");
saveToFile(); //call method
}
while (choice != 1 && choice != 2 && choice != 3 && choice != 4 && choice != 5 && choice != 6) ;
menu();
keyboard.nextLine();//catches the return character for the next time round the loop
}
答案 0 :(得分:0)
尝试切换声明
switch() {
case 1:
addBook();
break;
// etc ...
default:
System.out.println("Not a valid choice");
break;
}
此开关也可以使用字符串,因此您可以在菜单中添加 q 以退出,或者 b 返回以制作多级菜单。
这可能是需要的,因为来自readline的所有用户输入都被认为是字符串所以除非你将输入转换为int,这需要包装在try catch中,这是更好的默认选项将处理任何意外的用户输入。
case "1":
& case "q":
答案 1 :(得分:0)
更“干净”,更容易理解的方式就是这样
if(choice < 1 || choice > 6) {
//invalid input handling
}
while (choice >= 1 && choice <=6) {
// choice handling and program execution
}
您可以尝试的另一个选项是使用switch语句,您可以在这里学习 http://www.tutorialspoint.com/javaexamples/method_enum.htm
其他评论是正确的,这不是异常处理,而是非常不受欢迎的输入处理。异常处理将是例如输入null并抛出null异常错误。在那里你可以使用try catch来继续运行你的程序,即使抛出错误。