循环中的Java异常
问题是,每当我给出的不是所选选项(0,1,2,3,4)时,函数都会从循环中的Java异常,java,exception-handling,Java,Exception Handling,问题是,每当我给出的不是所选选项(0,1,2,3,4)时,函数都会从catch打印消息,然后请求一个新选项,但这件事会重复进行。如果存在中断,则整个执行将停止,我只想再次请求一个选项,但不需要无限循环。例如,如果我键入一个“r”而不是一个数字,它应该捕获异常并再次通过while。 我错过了什么?做这个 Scanner b = new Scanner(System.in); public void menu() { while (true) { try {
catch
打印消息,然后请求一个新选项,但这件事会重复进行。如果存在中断
,则整个执行将停止,我只想再次请求一个选项,但不需要无限循环。例如,如果我键入一个“r”而不是一个数字,它应该捕获异常并再次通过while
。
我错过了什么?做这个
Scanner b = new Scanner(System.in);
public void menu() {
while (true) {
try {
System.out.println("Your options is:");
int option = 0;
option = b.nextInt();
b.nextLine();
if (option == 1)
add();
else if (option == 2)
delete();
else if (option == 3)
print();
else if (option == 4)
nr();
else if (option == 0)
break;
} catch (Exception e) {
System.out.println("Not a valid option!");
// break;
}
}
b.close();
}
我加了一个
b.nextLine()和循环停止。try…catch
的基本目的是执行可能引发异常的代码,如果它确实引发异常,捕获并处理它
在这种情况下,无效输入不会引发异常,除非它们设法将一个字符潜入其中,这将导致无限循环
与其假设用户将输入一个数字(这是Scanner#nextInt
通常假设的),不如读取整行,然后使用Integer.parseInt()
构造int
try
{
do
{
option=b.nextInt();
// continue
switch(option){
case 0:
break;
case 1: add();
break;
case 2: delete();
break;
case 3: print();
break;
case 4: nr();
break;
default: System.out.println("Not a valid option!");
break;
}
}while(!(option==1||option==2||option==3||option==4))
}
catch(Exception e){
System.out.println("Please enter a number");
}
如果因为有人决定用“foo”而不是“1”而导致失败,那么您将遇到例外情况,并能够再次输入值。如果我输入一系列字母,会发生什么情况?
option = Integer.parseInt(b.nextLine());