有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在异常处理结束并正确执行后,开关代码将在一个永无止境的循环中执行。

首先,感谢您阅读本文。 我有一个异常处理案例,后面是一个开关。异常处理正确结束后,开关代码将在一个永无止境的循环中执行。如果我评论异常处理部分并添加 “selection=scanner.nextInt()”代码运行良好。但通过异常处理,永无止境的循环再次发生。我很确定这都是关于花括号的位置,但我就是分不清是哪一个。 谢谢你在这方面的帮助

导入java。util。扫描仪

班长{ 专用静态扫描仪=新扫描仪(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);
}

}


共 (1) 个答案

  1. # 1 楼答案

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

    selecta = null放在switch语句之后,应该就是这样