Java课程作业疑问:Average类构造方法实现问题
解决Average类构造方法的实现问题
嘿,我懂你现在卡在哪了——处理数组索引和人类计数的差异确实容易绕晕,我来一步步帮你把这个构造方法捋明白:
首先咱们明确核心需求:构造方法要先给数组分配内存,再通过循环让用户输入分数,提示信息得用人类习惯的「第N个」(从1开始),但数组存储要遵循Java的0起始索引规则。
完整的构造方法示例代码
import java.util.Scanner; public class Average { private double[] scores; // 用来存储所有分数的数组 // 构造方法:接收需要输入的分数总数作为参数 public Average(int totalScores) { // 第一步:为数组分配对应长度的内存空间 scores = new double[totalScores]; Scanner inputScanner = new Scanner(System.in); // 第二步:循环获取用户输入,处理计数差异 for (int i = 0; i < scores.length; i++) { // 把数组的0起始索引i,转换成人类习惯的i+1来显示提示 System.out.print("请输入第" + (i + 1) + "个分数:"); // 将用户输入的分数存入数组对应索引位置 scores[i] = inputScanner.nextDouble(); } inputScanner.close(); } // 可选:添加计算平均分的方法来验证功能 public double getAverage() { if (scores.length == 0) return 0.0; double total = 0; for (double score : scores) { total += score; } return total / scores.length; } // 测试用主方法 public static void main(String[] args) { Average avgTool = new Average(4); // 实例化时指定要输入4个分数 System.out.println("计算得到的平均分是:" + avgTool.getAverage()); } }
关键细节拆解
- 数组内存分配:构造方法通过参数
totalScores确定分数总数,直接用new double[totalScores]为数组分配对应长度的内存,避免后续动态扩容的麻烦。 - 计数转换逻辑:循环变量
i是数组的索引(从0开始),但给用户的提示用i+1,完美适配人类从1开始计数的习惯,同时保证数组存储的索引不会出错。 - 输入处理:用
Scanner类读取用户输入,每次循环读取一个double类型的分数,直接存入数组对应位置。
额外优化建议
如果需要让程序更健壮,可以给输入部分加上异常捕获,比如用try-catch包裹inputScanner.nextDouble(),防止用户输入非数字内容导致程序崩溃。
内容的提问来源于stack exchange,提问作者Jesse
相关产品推荐
相关产品推荐

