java - 循环做...虽然不确定

标签 java infinite-loop do-while inputmismatchexception

在 catch block 中,我试图纠正用户输入错误的问题。测试时,如果我使用“break”关键字,它不会跳转到最初的问题。如果我使用“继续”,它会无限循环。 "Sc.next();"似乎也没有解决它。

这是代码的相关部分。

public class ComputerAge {
    private static int age;
    private static int year;
    private static int month;
    private static int date;
    private static Calendar birthdate;

    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        System.out.print("Enter the numeral representing your birth month: ");
        do {
            try {
                month = sc.nextInt();
            } catch (InputMismatchException ime){
                System.out.println("Your respone must be a whole number");
                break;
            }
        } while (!sc.hasNextInt());

最佳答案

为了解决问题,我们应该确定最后要完成什么。
我们希望月份是数字月份,即数字 > 0。

因此:

  • 如果用户填写了正确的数字,month 将被填写。
  • 否则,将抛出异常并且 month 将保持为“0”。

结论:我们希望我们的程序在月份等于 0 时继续运行。

解决方案非常简单:

虽然条件应该是:

while (month == 0);

并且您应该将 break 更改为 sc.next()

关于java - 循环做...虽然不确定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22275790/

相关文章:

使用 mysql 数据库的 Java GUI 登录只接受最后一行密码进行访问而忽略其余部分

c++ - itoa 在 C++ 中创建一个无限循环

java - Java do while 循环的问题

java - 构建有向循环图的流畅界面?

Java,使用 Ant 处理 Apache Ivy 问题

java - 为什么在使用 String.valueOf 或 Float.toString 时此循环会变成无限循环?

c - 找到无法偿还贷款的确切金额(避免无限循环)

java - 我将如何使用 while 循环来获取多个输入?

c++ - 在 C++ 中使用 Do-While 循环的问题?

java - 这个错误是什么?为什么当我不使用像代码这样的库而不是像 aar 这样的库时不会发生这种情况?