当前位置: 首页 > 知识库问答 >
问题:

Try-Catch inside While循环

强宾白
2023-03-14

下面的代码询问用户他/她想要多少个赛车手。

while (true) { // loops forever until break
    try { // checks code for exceptions
        System.out.println("How many racers should" + " participate in the race?");
        amountRacers = in.nextInt();
        break; // if no exceptions breaks out of loop
    } 
    catch (InputMismatchException e) { // if an exception appears prints message below
        System.err.println("Please enter a number! " + e.getMessage());
        continue; // continues to loop if exception is found
    }
}

共有1个答案

汪泓
2023-03-14

捕获InputMisMatchException后,只需添加Input.Next()

catch (InputMismatchException e) { //if an exception appears prints message below
    System.err.println("Please enter a number! " + e.getMessage());
    input.next(); // clear scanner wrong input
    continue; // continues to loop if exception is found
}

您需要清除错误的输入,而扫描仪自动不会。

 类似资料:
  • 帮助,我对java完全陌生,我正在尝试创建一个循环,该循环将要求用户输入一个数字。如果用户输入的数字以外的任何内容,我想捕获异常并再次尝试获取正确的输入。我用一段时间循环完成了此操作,但是它不会在错误后为用户提供输入任何内容的机会,它循环了除该循环之外的所有内容。请帮助我了解什么是错的,以及正确的方法...谢谢。这就是我所拥有的:

  • 问题是,如果我输入一个正数(所以一切都正确),我必须输入它两次!同样,当我输入一个负数时,我需要输入两次。当我输入一个字符串时,我会得到一个“错误”,所以我想这还算不错。它是这样显示的: Bitte geben Sie die kleinste阳性Zahl des Intervalls Ein:-2 -3 -7 Bitte Geben Sie eine阳性Zahl ein 2

  • 问题内容: 我试图让用户有机会在引入会产生错误但又无法正常工作的东西之后重复输入,因为一旦发现 错误, 就不会再次执行try东西,而是直接进入catch东西,生成一个永恒的东西。柱。这是我的代码: 问题答案: 输入非整数时,对的调用不会消耗非整数。您需要致电(或)使用它。就像是,

  • 问题内容: 我试图让用户有机会在引入会产生错误但又无法正常工作的东西之后重复输入,因为一旦发现 错误, 就不会再次执行try东西,而是直接进入catch东西,生成一个永恒的东西。柱。这是我的代码: 问题答案: 输入非整数时,对的调用不会消耗非整数。您需要致电(或)使用它。就像是,

  • 问题内容: 当我在 while循环中 使用 try和catch 块时,我的程序有一个无限 循环 。 当我输入一个整数时,它运行良好并要求另一个输入,但是当我输入一个字符时,它将进入无穷循环。为什么会这样呢? 问题答案: 遇到无效输入时,由于nextInt()不使用无效令牌,因此程序进入无限循环。因此,导致该异常的任何令牌都将保留在该位置,并在下次尝试使用nextInt()时继续引发异常。 可以通过

  • 问题内容: 我试图确保用户输入是整数,但是当我使用下面的代码时,我只会得到语句的无限循环。关于如何改进的任何建议? 问题答案: 不会消耗无效的输入,因此它将反复尝试读取相同的无效值。要解决此问题,您需要通过调用或接受任何值来显式使用它。 顺便说一句,为使您的代码更整洁并避免昂贵的操作(如创建异常),您应使用。 这是组织代码的方法