【问题标题】:trying to get my question to loop back when an invalid input is entered by user当用户输入无效输入时,试图让我的问题循环回来
【发布时间】:2023-03-14 21:50:01
【问题描述】:

我觉得我几乎拥有这个权利。 错误是说 (!isinputValid) 未初始化。试图弄清楚为什么会这样以及如何改变它,所以我的问题重复了无效输入(超过 24 个)。

        boolean isInputValid;

        // The license plate must be a string and imported using next(), max 24hr parking
        for (int i = 0; i < licensePlates.length; i++) {
            System.out.println("Auto" + (i + 1));
            System.out.print("      Kenteken: ");
            licensePlates[i] = input.next();
            System.out.print("      Geparkeerde uren (max. 24): ");
            parkingTime[i] = input.nextInt();
            if (parkingTime[i] > 24){       // the max time for parking is 24hr
                isInputValid = false;
                System.out.println("      De parkeerduur kan maximaal 24 uur zijn");
            }
            while (!isInputValid);
        }

    }

}

【问题讨论】:

  • while (!isInputValid); 如果isInputValid 是true,则它本身什么也不做,如果isInputValid 是false,则进入无限循环。 while 一个人在那里做什么?

标签: java loops while-loop boolean


【解决方案1】:

按如下方式进行:

do {
    isInputValid = true;
    System.out.print("      Geparkeerde uren (max. 24): ");
    try {
        parkingTime[i] = Integer.parseInt(input.nextLine());
        if (parkingTime[i] > 24) { // the max time for parking is 24hr
            isInputValid = false;
            System.out.println("      De parkeerduur kan maximaal 24 uur zijn");
        }
    } catch (NumberFormatException e) {
        isInputValid = false;
    }
} while (!isInputValid);

另外,请注意我使用了nextLine() 而不是nextInt()。查看Scanner is skipping nextLine() after using next() or nextFoo()? 了解更多信息。

【讨论】:

    猜你喜欢
    • 2013-10-21
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    相关资源
    最近更新 更多