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

Java计算学生成绩平均值小数输入报错及自定义Students类问题

Java成绩平均值计算代码调整方案

问题根因

原有代码存在两个核心问题:

  • 使用int类型数组存储成绩,且调用Scanner.nextInt()读取输入,整数类型无法兼容带小数的CGPA值,输入浮点数时会抛出输入类型不匹配异常
  • 未实现自定义的学生数据类型,只能单独存储成绩值,无法扩展其他学生属性

调整思路

  • 存储结构替换:将成绩存储类型从int替换为double适配小数输入,读取输入的方法同步替换为nextDouble()
  • 自定义Student数据类:封装学生CGPA属性,后续可扩展姓名、学号等其他字段,计算平均值时直接读取类内属性即可

完整修改后代码

import java.util.*;

// 自定义Student数据类,如需单独成文件可移除static修饰并添加public
class Student {
    // 可根据需求扩展学号、姓名等其他属性
    private double cgpa;

    public Student(double cgpa) {
        this.cgpa = cgpa;
    }

    public double getCgpa() {
        return cgpa;
    }
}

public class ArrayAverageProblem {
    public static void main(String[] args) {
        // 修正原代码的拼写错误Enetr->Enter
        System.out.println("Enter number of students : ");
        Scanner adnan = new Scanner(System.in);
        int length = adnan.nextInt();
        // 替换为Student类型数组
        Student[] students = new Student[length];
        System.out.println("Enter cgpa of students : ");
        for (int i = 0; i < length; i++) {
            // 改用nextDouble读取小数输入
            double cgpa = adnan.nextDouble();
            students[i] = new Student(cgpa);
        }
        double averageCgpa = averageCgpa(students);
        System.out.println("Average of students cgpa :  " + averageCgpa);
        adnan.close();
    }

    // 方法入参改为Student数组
    public static double averageCgpa(Student[] students) {
        double sum = 0d;
        for (Student student : students) {
            sum = sum + student.getCgpa();
        }
        return sum / students.length;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:54:02