首先,感谢您阅读这篇文章。
我有这种情况的异常处理,然后再进行切换。异常处理正确结束后,切换代码将在永无止境的循环中执行。如果我评论异常处理部分,然后添加
“选择= scan.nextInt()”代码可以正常工作。但是通过异常处理,永无止境的循环会再次发生。我很确定这全都取决于花括号的位置,但是我无法弄清其中的哪个。
谢谢您的帮助。

导入java.util.Scanner;

主类{
私有(private)静态Scanner扫描仪=新的Scanner(System.in);

public static void main( String[] args ) {

    ToString human = new ToString("John", 30, true);

    int selection = 0;
    boolean quit = false;
    String selecta = null;
    String message = "Select option";

    while (!quit) {
        returnMessage(message);
        while (selecta == null) {

            try {
                selecta = scanner.nextLine();
                selection = Integer.valueOf(selecta);
                break;

            } catch (NumberFormatException e) {
                returnMessage("An integer was expected. Please try again.");
                selecta = null;
                returnMessage(message);
            }
        }
                switch (selection) {
                    case 1:
                        System.out.println(human.getAge());
                        break;
                    case 2:
                        System.out.println(human.getName());
                        break;
                    case 3:
                        System.out.println(human.isMan());
                        break;
                    case 4:
                        quit = true;
                        break;

                }
    }
}

public static void returnMessage (String message){
    System.out.println(message);
}

}

最佳答案

在switch语句之后selecta变量永远不会设置为null,并且由于您的输入位于带有selecta == null条件的块中,因此它永远不会执行并直接返回switch语句,依此类推,依此类推...

selecta = null放在switch语句之后,应该就是它。

08-19 16:59