Java 在int字段中输入字符串时,如何重复菜单?
我在下面有一个菜单,我想在输入字符串而不是整数时重复该菜单。我知道当字符串输入“in/nextInt();”时,它会立即崩溃。我想知道我能做些什么来阻止我现在的处境Java 在int字段中输入字符串时,如何重复菜单?,java,switch-statement,Java,Switch Statement,我在下面有一个菜单,我想在输入字符串而不是整数时重复该菜单。我知道当字符串输入“in/nextInt();”时,它会立即崩溃。我想知道我能做些什么来阻止我现在的处境 Scanner in = new Scanner(System.in); do{ System.out.println(""); System.out.println("Please choose from the following options. " ); Sy
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("");
}
Scanner-in=新的扫描仪(System.in);
做{
System.out.println(“”);
System.out.println(“请从以下选项中选择”);
System.out.println(“”);
System.out.println(“1.是否要使用默认转子设置?”);
System.out.println(“2.是否要使用自定义转子设置?”);
System.out.println(“3.重新开始”);
System.out.println(“”);
menuOneAnwser=in.nextInt();
}而(menuOneAnwser<0 | | menuOneAnwser>3);
试一试{
开关(menuOneAnwser){
案例1:
Enigma.defaultSwitch=true;
打破
案例2:
Enigma.defaultSwitch=false;
g、 自定义转子();
打破
案例3:
导言();
打破
违约:
打破
}
}捕获(输入不匹配异常e){
System.out.println(“这不是一个整数……请输入一个介于1和2之间的整数!”);
System.out.println(“请重试…”);
System.out.println(“”);
}
您可以编写自己版本的tryParse
(来自C#),它将尝试将输入解析为整数,但如果输入不是(在本例中返回null
),则会提醒您,然后您可以将其作为字符串
或任何您想要的内容进行处理:
public static Integer tryParseInteger(String input) {
try {
return Integer.parseInt(input);
} catch (NumberFormatException e) {
return null;
}
}
试抓式方法:
menuOneAnwser = -1;
while (menuOneAnwser < 0 || menuOneAnwser > 3) {
try {
menuOneAnwser = in.nextInt();
} catch (Exception e) {
System.out.println("Please try again.." );
}
}
menuOneAnwser=-1;
而(menuOneAnwser<0 | | menuOneAnwser>3){
试一试{
menuOneAnwser=in.nextInt();
}捕获(例外e){
System.out.println(“请重试…”);
}
}
如果输入无效,请尝试将该字符串转换为捕捉异常菜单的整数,而不是直接调用scanned.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);
do{
System.out.println(“”);
System.out.println(“请从以下选项中选择”);
System.out.println(“”);
System.out.println(“1.是否要使用默认转子设置?”);
System.out.println(“2.是否要使用自定义转子设置?”);
System.out.println(“3.重新开始”);
System.out.println(“”);
试一试{
menuOneAnwser=Integer.parseInt(输入);
}捕获(数字格式){
menuOneAnwser=-1;
}
}而(menuOneAnwser<0 | | menuOneAnwser>3);