Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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 捕获InputMismatchExpection时的常量循环,而不是再次重试/扫描键盘输入_Java_If Statement_Infinite Loop_Inputmismatchexception - Fatal编程技术网

Java 捕获InputMismatchExpection时的常量循环,而不是再次重试/扫描键盘输入

Java 捕获InputMismatchExpection时的常量循环,而不是再次重试/扫描键盘输入,java,if-statement,infinite-loop,inputmismatchexception,Java,If Statement,Infinite Loop,Inputmismatchexception,每当捕捉到输入不匹配时,就会出现无限循环(例如输入];),而不是再次尝试“option=scanner.nextInt();”。然而,输入一个正常的无效输入,如“7”就可以了。我不想使用“break”;因为我希望它留在循环中并再次扫描输入,那么我将如何处理这个问题 System.out.println("Select option [1, 2, 3, 4] :> "); int option = 0; while(runOptions){ try{

每当捕捉到输入不匹配时,就会出现无限循环(例如输入];),而不是再次尝试“option=scanner.nextInt();”。然而,输入一个正常的无效输入,如“7”就可以了。我不想使用“break”;因为我希望它留在循环中并再次扫描输入,那么我将如何处理这个问题

    System.out.println("Select option [1, 2, 3, 4] :> ");

    int option = 0;
    while(runOptions){
        try{
            option = scanner.nextInt();
        }catch(InputMismatchException e){
            System.out.println("ERROR Try Again...\n");
            System.out.println("\nSelect option [1, 2, 3, 4] :> \n");

        }


        if(option != 4){
            if(option == 1){
                doAddOption();
                runLoop = false;
    }
    else if(option == 2){
                doDelete();
                runLoop = false;
    }
    else if(option == 3){
                doDeleteRegistry();
                runLoop = false;
    }
    else{
          System.out.println("INVALID Try again..");
    }   
}

你说的
有无限循环是什么意思?
当我故意输入无效的非int值时,我得到了InputMismatchExpection消息的无限循环,当它返回时,它不是运行“try{}”代码,而是出于某种原因再次打印错误,如下所示: