Java程序修改求助:实现三门考试成绩的通过学生统计
三门考试成绩的通过统计代码修改方案
以下是修改后的完整代码,实现了输入每位学生三门考试成绩,并统计三门均及格(≥7分,满分10分)的学生人数:
import java.util.Scanner; public class Attestation { static double InputNumber(String caption, Scanner sc) { System.out.print(caption); boolean isError; do { isError = !sc.hasNextDouble(); if (isError) { System.out.print("ERROR: "); sc.nextLine(); } } while (isError); double score = sc.nextDouble(); // 验证成绩是否在0-10的有效范围 if (score < 0 || score > 10) { System.out.print("成绩必须在0到10之间,请重新输入: "); return InputNumber(caption, sc); } return score; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 输入学生人数 int count = (int) InputNumber("输入学生人数: ", sc); // 打印表头 System.out.println("\nTest №1\t │ Test №2\t │ Test №3"); System.out.println("---------------------------------------------"); // 输入成绩并统计通过人数 int passed = 0; for (int i = 1; i <= count; i++) { System.out.println("\n第" + i + "位学生:"); double test1 = InputNumber("输入第1门成绩: ", sc); double test2 = InputNumber("输入第2门成绩: ", sc); double test3 = InputNumber("输入第3门成绩: ", sc); // 打印当前学生的三门成绩 System.out.printf("%.1f\t │ %.1f\t │ %.1f\n", test1, test2, test3); // 判定是否三门均及格 if (test1 >= 7 && test2 >= 7 && test3 >= 7) { passed++; } } // 输出统计结果 System.out.println("\n---"); System.out.println(passed + " 名学生通过院校考核"); sc.close(); } }
关键修改说明
- 复用Scanner实例:将Scanner对象作为参数传入
InputNumber方法,避免重复创建对象导致的输入异常。 - 三门成绩输入逻辑:在循环中为每个学生依次输入三门成绩,明确提示每门考试的输入要求。
- 成绩有效性验证:新增成绩范围检查,确保输入的成绩在0-10的合理区间内。
- 通过判定逻辑修正:只有当三门成绩都≥7分时,才将该学生计入通过人数,符合需求。
- 结果可视化优化:打印每位学生的三门成绩,与表头对应,让输出更直观清晰。
内容的提问来源于stack exchange,提问作者draing
相关产品推荐
相关产品推荐

