Java错误处理导致无限循环

时间:2016-06-14 09:51:04

标签: java error-handling try-catch infinite-loop

int choice = 0;

    while ((choice != 1) || (choice !=2)){

        System.out.println("1. Option 1");
        System.out.println("2. Option 2");

        try{

        choice = scanner.nextInt();

        }

        catch(InputMismatchException e){
            System.out.println(e);
        }

        if (choice == 1){
            System.out.println("Option 1");
            break;
        }

        if (choice == 2){
            System.out.println("Option 2");
            break;
        }

        System.out.println("Please enter a valid choice.");

    }

我正在尝试处理输入非int的情况。为什么这会旋转成无限循环?在我尝试添加try catch块之前,它工作正常。

2 个答案:

答案 0 :(得分:0)

当然会,因为你在while循环中捕获错误而没有设置任何条件来在捕获错误时退出循环,所以你永远不会退出。

向while循环添加另一个条件以在出错时退出,或者在发生错误时将选项设置为1或2,或者在检测到错误时中断。

    int choice = 0;

    while ((choice != 1) || (choice !=2)) {
      System.out.println("1. Option 1");
      System.out.println("2. Option 2");

      try{
        choice = scanner.nextInt();
      } catch(InputMismatchException e) {
        System.out.println(e);
      }
      switch(choice) {
      case 1:
        System.out.println("Option 1");
        break;
      case 2:
        System.out.println("Option 2");
        break;
      default:
        System.out.println("Please enter a valid choice.");
        break; 
      }
    }

答案 1 :(得分:0)

替换你的try catch
cache/modules/ModuleName/ModuleNameVardefs.php