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

基于LinkedHashMap的Java评分系统功能异常求助

评分系统问题分析与修复方案

现存问题

  • 输入范围判断逻辑错误:mark >100 && mark <0 这个条件永远为假,因为一个数不可能同时大于100又小于0,应该用逻辑或||。而且判断后没有终止程序,非法输入会继续执行后续逻辑。
  • First Class等级无匹配逻辑:当前First Class对应的阈值是70,遍历到该等级时,mark <70的条件对70及以上的分数不成立,导致这部分分数没有输出结果;同时100分也没有对应的匹配逻辑。
  • 冗余异常声明:main方法声明抛出NullPointerException,但代码中不存在会触发该异常的操作,属于冗余。

修复后的代码

import java.util.*;

public class ScoreSystem {

    public static void main(String[] args) {
        try {
            // 用LinkedHashMap存储等级与对应分数上限,保持插入顺序
            LinkedHashMap<String, Integer> gradeMap = new LinkedHashMap<>();
            gradeMap.put("Fail", 39);          // <=39分
            gradeMap.put("Third Class", 49);   // 40-49分
            gradeMap.put("Second Class, Division 2", 59); //50-59分
            gradeMap.put("Second Class, Division 1", 69); //60-69分
            gradeMap.put("First Class", 100);  //70-100分
        
            Scanner scan = new Scanner(System.in);
            System.out.println("What was your mark?");
            int mark = scan.nextInt();
        
            // 修正范围判断逻辑,非法输入直接终止程序
            if (mark > 100 || mark < 0) {
                System.out.println("Invalid Input: out of range.");
                return;
            }
        
            // 遍历匹配对应等级
            for (String grade : gradeMap.keySet()) {
                if (mark <= gradeMap.get(grade)) {
                    System.out.println("You got a " + grade);
                    break;
                }
            }
        } catch (InputMismatchException e) {
            System.out.println("Invalid Input, program terminating");
        }
    }
}

修复说明

  1. 把输入范围判断的&&改为||,并添加return终止程序,避免非法输入进入后续逻辑。
  2. 将First Class的分数上限改为100,确保70-100分都能匹配到该等级。
  3. 把判断条件从mark < score.get(i)改为mark <= score.get(i),让各等级的分数区间更清晰(比如39分刚好属于Fail)。
  4. 移除冗余的NullPointerException声明,并重命名变量score为gradeMap,增强代码可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:35:41