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

编写Java方法average:根据成绩数组返回班级平均分对应字母等级

实现班级平均分字母等级计算方法

我来帮你完成这个需求——写一个计算班级平均分对应字母等级的方法,还附带用户交互的测试逻辑,让你可以直接运行测试。

思路拆解

  • 先计算成绩数组的总分,再通过浮点运算得到精确平均分(避免整数除法的精度丢失)
  • 按照从高到低的区间判断对应的字母等级
  • 额外加入输入合法性校验,让方法更健壮,能处理空数组、非法成绩等情况

完整代码实现

import java.util.Scanner;

public class GradeCalculator {
    // 题目要求的average方法
    public static char average(int[] grades) {
        // 校验数组合法性
        if (grades == null || grades.length == 0) {
            throw new IllegalArgumentException("成绩数组不能为空或无元素");
        }
        
        int total = 0;
        for (int grade : grades) {
            // 校验单个成绩的合法性(0-100区间)
            if (grade < 0 || grade > 100) {
                throw new IllegalArgumentException("成绩必须在0到100之间,当前非法成绩:" + grade);
            }
            total += grade;
        }
        
        // 计算平均分,强制转换为double保证精度
        double averageScore = (double) total / grades.length;
        
        // 按区间返回对应等级
        if (averageScore >= 90) {
            return 'A';
        } else if (averageScore >= 80) {
            return 'B';
        } else if (averageScore >= 70) {
            return 'C';
        } else if (averageScore >= 60) {
            return 'D';
        } else {
            return 'F';
        }
    }

    // 主方法:实现用户输入交互,测试average方法
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("您要输入多少个成绩?");
        int scoreCount = scanner.nextInt();
        
        int[] studentGrades = new int[scoreCount];
        System.out.println("输入成绩...");
        for (int i = 0; i < scoreCount; i++) {
            System.out.print("请输入第" + (i+1) + "个成绩: ");
            studentGrades[i] = scanner.nextInt();
        }
        
        try {
            char finalGrade = average(studentGrades);
            System.out.println("班级平均分对应的字母等级是: " + finalGrade);
        } catch (IllegalArgumentException e) {
            System.out.println("错误提示: " + e.getMessage());
        }
        
        scanner.close();
    }
}

代码细节说明

  • 合法性校验:增加了数组空值/空长度、成绩区间的判断,避免程序因非法输入崩溃,同时给出清晰的错误提示
  • 平均分精度:把总分强制转换为double后再除以成绩数量,确保得到精确的平均分(比如899分10个学生,平均分是89.9,仍属于B等级,逻辑更准确)
  • 等级判断逻辑:从最高等级开始判断,一旦满足条件立即返回,减少不必要的判断步骤

测试示例

比如输入以下内容:

您要输入多少个成绩?10
输入成绩...
请输入第1个成绩: 95
请输入第2个成绩: 88
请输入第3个成绩: 76
请输入第4个成绩: 82
请输入第5个成绩: 90
请输入第6个成绩: 65
请输入第7个成绩: 70
请输入第8个成绩: 85
请输入第9个成绩: 92
请输入第10个成绩: 78

程序会计算出总分821,平均分82.1,最终输出:班级平均分对应的字母等级是: B

如果输入了非法成绩(比如105),程序会提示:错误提示: 成绩必须在0到100之间,当前非法成绩:105

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:16:58