如何从文件读取学生姓名与成绩数组,及调用指定索引方法?
学生成绩数组读取与方法调用问题解答
一、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
相关产品推荐
相关产品推荐

