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

Java成绩计算程序异常:仅首次输入有效,后续成绩超100

问题分析

你遇到的问题核心是成绩累加变量没有在每个学生计算前重置。sum和average变量定义在所有学生循环的外部,处理第一个学生时是正常的,但处理第二个学生时,sum会保留第一个学生的成绩总和,再加上当前学生的成绩,最终计算出的平均分自然会远超100分。

修复后的代码
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class programmingProjectGrades {    
    public static void main(String[] args) throws IOException {        
        Scanner scn = new Scanner(System.in);
        PrintWriter out = new PrintWriter("grades.txt");
        
        System.out.println("Please enter the number of students you wish to enter: ");
        int numberOfStudents = scn.nextInt();
    
        for(int i = 0; i < numberOfStudents; i++){
            // 将每个学生的成绩统计变量放到循环内部,每次循环重置
            double sum = 0;
            double average = 0;
            int studentsGrades = 0;
            String letterGrade;
            
            System.out.println("Student's Name: " );
            String students_name = scn.next();
    
            System.out.println("Enter 5 test scores for this student : ");
            for (int x = 0;x < 5; x++) {
                studentsGrades = scn.nextInt();
                sum += studentsGrades;
            }
            // 平均分计算移到内层循环结束后,避免重复计算
            average = sum /5;                
            
            if (average >= 90){
                letterGrade = "A";
            } else if (average >= 80){
                letterGrade = "B";
            } else if (average >= 70){
                letterGrade = "C";
            } else if (average >= 60){
                letterGrade = "D";
            } else {
                letterGrade = "F";
            }
    
            out.println(students_name);
            out.println("Final Grade: " +  average);
            out.println("Letter Grade: " + letterGrade);    
        }
        out.close();
    }
}
关键修复点
  • 将sum、average、studentsGrades、letterGrade这些仅属于单个学生的变量移到外层for循环(学生循环)的内部,这样每个学生开始计算时,这些变量都会被重新初始化,不会保留上一个学生的数据。
  • 把average = sum /5;移到内层循环(成绩输入循环)的外面,不需要每次输入成绩都计算平均分,只需要在5次成绩都输入完成后计算一次即可,提升效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:06:32