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
相关产品推荐
相关产品推荐

