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

如何从文件读取学生姓名与成绩数组,及调用指定索引方法?

学生成绩数组读取与方法调用问题解答

一、getStudentNameByIndex和getGradeByIndex的传参调用方式

这两个方法是ClassRoom类的实例方法,需先创建ClassRoom对象并加载数据后,传入**合法的数组索引(整数)**调用:

1. getStudentNameByIndex调用示例

该方法接收学生数组的索引(从0开始),返回对应位置的学生姓名:

// 先创建ClassRoom实例并加载文件数据
ClassRoom sg = new ClassRoom();
sg.loadGrades("grade1.txt");

// 获取第1个学生(索引0)的姓名
String firstStudent = sg.getStudentNameByIndex(0);
System.out.println(firstStudent); // 输出: Sandy

// 获取第5个学生(索引4)的姓名
String fifthStudent = sg.getStudentNameByIndex(4);
System.out.println(fifthStudent); // 输出: Mandie

注意:参数必须是0到numStudents-1之间的整数(当前文件有10个学生,索引范围0-9),超出范围会触发ArrayIndexOutOfBoundsException。

2. getGradeByIndex调用示例

该方法接收相同的索引值,返回对应学生的计算后成绩:

// 获取第3个学生(索引2)的成绩
double thirdStudentGrade = sg.getGradeByIndex(2);
System.out.printf("%.2f", thirdStudentGrade); // 输出该学生的加权平均成绩

姓名数组和成绩数组的索引一一对应,同一个索引指向同一个学生的姓名和成绩。

二、确保文件数据正确读取到数组的要点

1. 修正loadGrades的核心错误

当前代码中courseName = readFile.next();会错误读取第一个学生的姓名作为课程名,导致后续数据读取错位,直接删除该行代码即可。

2. 动态更新学生数量

不要硬设numStudents = 10,在loadGrades方法的循环结束后,将实际读取的学生数赋值给numStudents:

// 循环结束后添加
numStudents = count;

避免后续遍历数组时访问未初始化的元素。

3. 数组边界防护

读取时要限制count不超过数组最大长度(50),防止数组越界:

// 修改循环条件
while (readFile.hasNextLine() && count < studentNames.length) {
    // 原读取逻辑
}

4. 修正成绩极值方法的逻辑

当前findMaxGradeIndex和findMinGradeIndex返回的是成绩值而非索引,完全不符合需求,需修改为返回对应索引:

public int findMaxGradeIndex() {
    int maxIndex = 0;
    for (int index = 1; index < numStudents; index++) {
        if (studentGrades[index] > studentGrades[maxIndex]) {
            maxIndex = index;
        }
    }
    return maxIndex;
}

public int findMinGradeIndex() {
    int minIndex = 0;
    for (int index = 1; index < numStudents; index++) {
        if (studentGrades[index] < studentGrades[minIndex]) {
            minIndex = index;
        }
    }
    return minIndex;
}

修改后可以用返回的索引直接调用getStudentNameByIndex和getGradeByIndex,获取最高/最低成绩学生的信息。

5. 文件路径与异常处理优化

  • 确保FILE_PATH指向正确的文件位置:若文件在项目根目录,直接写文件名;若在其他路径,需填写绝对路径。
  • 增强异常提示,替代仅打印堆栈信息:
catch (FileNotFoundException e) {
    System.out.println("错误:无法找到指定文件 -> " + file);
}

6. 验证成绩计算逻辑

当前成绩计算规则为(7个平时成绩 + 3*最终成绩)/10,需确认该加权规则符合业务需求,若需调整可修改公式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:07:17