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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:58:15