Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在int字段中输入字符串时,如何重复菜单?_Java_Switch Statement - Fatal编程技术网

Java 在int字段中输入字符串时,如何重复菜单?

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

我在下面有一个菜单,我想在输入字符串而不是整数时重复该菜单。我知道当字符串输入“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("");

    }
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);