小编sli*_*ant的帖子

带有nextInt的try-catch语句,正确的实现方式?

我正在尝试编写最紧凑的解决方案,用于仅使用 nextInt() 方法和它抛出的异常来从用户读取整数以排除错误......这是我现在拥有的代码:

Scanner sn = new Scanner(System.in);

    boolean inputNotNull = true;
    while (inputNotNull) {
        try {
            int number = sn.nextInt();

            System.out.printf("The number %d is power of 2: %b\n", number, isPowerOfTwo(number));
            if (number == 0) {
                inputNotNull = false;
            }
        }
        catch(InputMismatchException e) {
            System.err.println("Wrong input! Input only integer numbers please...");
    }

    }
Run Code Online (Sandbox Code Playgroud)

所以,这应该做的是等待来自用户的整数。如果用户输入 0结束程序。我的想法是尝试排除用户使用InputMismatchException输入除整数以外的其他内容时的场景(我知道这不是捕获 RuntimeException 的最佳实践)。当引发异常时,会打印一条错误消息,并且程序返回到 while 循环,在没有发生任何事情的情况下再次询问输入。

我在这里使用的方法有一个缺陷,当用户输入不是整数值的内容时,程序会重复打印出错误消息,永远循环。

如何避免这种情况?

作为一个附带问题,您将如何解决我正在尝试解决的这个问题?

java

0
推荐指数
1
解决办法
2747
查看次数

标签 统计

java ×1