我的带有try catch的循环被卡在了无尽的循环中,它应该在每次输入时提示用户。

问题描述 投票:0回答:1

我想让用户输入一个数字,如果他们输入错误的数字(不是1到99之间的int),那么catch(防止字符串崩溃)并循环,直到输入一个正确的数字。我的循环不知为何卡在了一个无尽的循环中。注意:我确实导入了Scanner,也导入了异常。

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String result;
        int number;
        boolean done = false;
        while (true) {
            try {
                System.out.println("Please select a number from 1 to 99.");
                number = input.nextInt();
                input.nextLine();

                if (number >= 1 || number <= 99) {
                    result = checkNumber(number);
                    System.out.println(result);
                    break;
                }
            } catch (InputMismatchException exception) {
            }
        }
    }
java while-loop try-catch
1个回答
0
投票

input.nextInt() 不会消耗任何不是一个 int. 它将抛出一个异常。你忽略这个异常,并尝试消耗一个新的 int. 它仍然不是一个 int. 同样的异常。无限循环。再加一个 input.nextLine() 在你的接球区。

© www.soinside.com 2019 - 2024. All rights reserved.