You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Java while循环搭配Scanner输入后反复提示的问题

问题根因

你代码的问题出在while循环的判断逻辑不符合预期:

  • 原有循环条件perfectQuizScore > quizScore的逻辑是「只要测验满分大于当前输入的分数,就继续执行循环」
  • 输入小于满分的合法值时,条件判断依然成立,循环会再次执行,因此会重复打印输入提示
  • 原逻辑甚至会出现输入超过满分的非法值时反而跳出循环的错误,完全和预期功能相反

修正方案

你原本的需求应该是「当输入的分数不合法(小于0/大于满分)时,循环要求用户重新输入」,按照以下逻辑修改即可:

  1. 初始化quizScore为非法值(比如-1),保证第一次能正常进入循环
  2. 将循环条件修改为判断分数是否非法

修正后的代码参考:

// 初始化quizScore为非法值,保证首次进入循环
int quizScore = -1;
// 只要分数不合法就持续循环要求输入
while (quizScore < 0 || quizScore > perfectQuizScore) {
    System.out.print("Enter a student's total quiz score : ");
    quizScore = Integer.parseInt(keyboard.nextLine());
    if (quizScore > perfectQuizScore) {
        System.out.println("Invalid value! Score must not be greater than perfect score.");
    } else if (quizScore < 0) {
        System.out.println("Invalid value! Value must be greater than 0.");
    }
}

修改后只有输入合法的分数(0 ≤ quizScore ≤ perfectQuizScore)时,循环才会终止,进入后续流程。

内容的提问来源于stack exchange,提问作者user17075925

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:27:03