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

Java成绩册程序:如何关联二维数组与对应学生姓名输出平均分

修复学生成绩册中个人平均分的姓名显示问题

问题根源

你当前的getStudentAverage方法里,错误地用Arrays.toString(name)打印整个姓名数组,还额外添加了不必要的"Student X"标识,导致无法正确关联单个学生的姓名。同时代码里还有几处冗余和无用代码需要清理。

具体修复步骤

  1. 正确关联学生姓名:在循环中通过name[row]直接获取对应索引的学生姓名,替换掉原来的"Student " + (row+1) + Arrays.toString(name)。
  2. 移除无用代码:getStudentAverage方法里的Scanner in完全没用到,直接删除。
  3. 优化成绩赋值逻辑:原loadGradeArray方法的嵌套循环会重复给成绩赋值多次,完全没必要,简化成直接赋值即可。
  4. 格式化输出对齐:使用printf格式化输出,让姓名和平均分的显示更整齐,匹配你期望的格式。

修复后的完整代码

import java.util.*;
import java.io.*;

public class GradeBook
{
    public static void main(String[] args) 
    {
        System.out.println("Starting program\n\n");
        String[] STUDENT_NAMES = new String[] {"Adams", "Baker", "Campbell", "Dewey", "East"};
        int[][] STUDENT_GRADES = new int[5][3];
        
        loadGradeArray(STUDENT_GRADES);
        
        for (int i = 0; i < STUDENT_NAMES.length; i++) 
        {
            System.out.printf("%-10s %5d %8d \n", STUDENT_NAMES[i], STUDENT_GRADES[i][0], STUDENT_GRADES[i][1]);
        }
            
        getStudentAverage(STUDENT_GRADES, STUDENT_NAMES);
    } //end main
    
    public static void getStudentAverage(int[][] grade, String[] name)
    {
        double sum = 0;
        double average = 0;
        
        for(int row = 0; row<grade.length; row++)
        {
            // 只计算前两门考试成绩
            for(int col = 0; col < 2; col++)
            {
                sum += grade[row][col];
            }
            
            average = sum / 2;
            sum = 0;
            // 按期望格式输出,对齐姓名
            System.out.printf("The average of %-10s is: %.1f\n", name[row], average);
        }
    }
    
    public static void loadGradeArray(int[][] STUDENT_GRADES)
    {
        // 直接给每个学生的两门成绩赋值,去掉冗余循环
        STUDENT_GRADES[0][0] = 75;
        STUDENT_GRADES[0][1] = 75;
        STUDENT_GRADES[1][0] = 100;
        STUDENT_GRADES[1][1] = 75;
        STUDENT_GRADES[2][0] = 84;
        STUDENT_GRADES[2][1] = 75;
        STUDENT_GRADES[3][0] = 80;
        STUDENT_GRADES[3][1] = 75;
        STUDENT_GRADES[4][0] = 50;
        STUDENT_GRADES[4][1] = 75;
    }
} //end class

输出效果

运行后会得到你期望的格式:

Starting program

Adams         75      75 
Baker        100      75 
Campbell      84      75 
Dewey         80      75 
East          50      75 
The average of Adams     is: 75.0
The average of Baker     is: 87.5
The average of Campbell  is: 79.5
The average of Dewey     is: 77.5
The average of East      is: 62.5

内容的提问来源于stack exchange,提问作者b-rad90

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:40:32