【问题标题】:Java while loop continuously executing the code in catch block if error generated once如果错误生成一次,Java while 循环会继续执行 catch 块中的代码
【发布时间】:2021-08-10 06:43:12
【问题描述】:

我想打印一个数字的乘法表。所以我做了一个 while(true) 块来不断地接受用户的输入。我还做了一个 try and catch 块,以便处理异常。
下面是我的代码:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Getting the multiplication table of any number");
        while (true) {
            try {
                System.out.println();
                System.out.print("Enter a number: ");
                long number = scanner.nextLong();
                for (byte num = 1; num < 11; num++) {
                    System.out.println(number + "X" + num + " = " + (number * num));
                }
                System.out.println();
                System.out.println();
            } catch (Exception e) {
                System.out.println("Please enter a valid input.");
            }
        }
    }
}

当我运行程序时,它运行良好,直到我只引入一个错误。然后它只是给出输出:

输入一个数字:请输入一个有效的输入。

两个语句都在同一行,并且只是连续打印该行,没有任何延迟或不让我输入。
为什么会发生这种情况,我该如何纠正?

【问题讨论】:

标签: java error-handling while-loop


【解决方案1】:

您可以将 catch 块更改为:

catch (Exception e) {
      System.out.println("Please enter a valid input.");
      scanner.next();
}

【讨论】:

  • 您好,欢迎您。这就是链接副本中的确切答案。我们通常不会回答明显与另一个问题重复的问题。
  • 谢谢它确实解决了它。但我的问题是为什么会出现这个错误,以及语句“scanner.next()”是如何纠正它的。
  • @Gon49 它在我上面发布的副本中。解释的比较清楚。
  • @FedericoklezCulloca 这可能是完全相同的答案,但实际上由于某种原因那里的东西对我不起作用,我并没有真正理解他们在那里做了什么,
  • @Gon49 怎么会不行呢?这是完全相同的解决方案,即在扫描仪上调用next()。此外,它还解释了如何在这种情况下不发现自己以及为什么会发生这种情况。
猜你喜欢
  • 2018-09-24
  • 2022-06-18
  • 2011-05-11
  • 2019-06-20
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多