我在下面有一个菜单,我希望在输入字符串而不是整数时重复菜单。我知道何时在“ in / nextInt();”中输入字符串。它立即崩溃。我想知道如何才能阻止现在的情况。
Scanner in = new Scanner(System.in);
do{
System.out.println("");
System.out.println("Please choose from the following options. " );
System.out.println("");
System.out.println("1. Do you want to use the default rotor settings? ");
System.out.println("2. Do you want to use the custom rotor settings? ");
System.out.println("3. Start over. ");
System.out.println("");
menuOneAnwser = in.nextInt();
}while(menuOneAnwser < 0 || menuOneAnwser > 3);
try{
switch(menuOneAnwser){
case 1:
Enigma.defaultSwitch = true;
break;
case 2:
Enigma.defaultSwitch = false;
g.customRotor();
break;
case 3:
introduction();
break;
default:
break;
}
}catch(InputMismatchException e){
System.out.println("That is not a integer.... Please enter a interger between 1 and 2!" );
System.out.println("Please try again.." );
System.out.println("");
}
而不是直接调用scan.nextInt,而是尝试将该字符串转换为一个捕获异常菜单的整数,因为输入无效,然后将menuOneAnwser设置为-1
do{
System.out.println("");
System.out.println("Please choose from the following options. " );
System.out.println("");
System.out.println("1. Do you want to use the default rotor settings? ");
System.out.println("2. Do you want to use the custom rotor settings? ");
System.out.println("3. Start over. ");
System.out.println("");
try {
menuOneAnwser = Integer.parseInt(input);
} catch (NumberFormatException e) {
menuOneAnwser = -1;
}
}while(menuOneAnwser < 0 || menuOneAnwser > 3);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句