编写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
相关产品推荐
相关产品推荐

