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

Java新手求助:生成随机整数数组返回空数组问题

帮你搞定RandomArray类的问题

嘿,作为Java新手碰到这种问题太正常啦,我来帮你找出问题所在并修正~你说输出总是[],大概率是因为代码里没有实际创建并填充数组,而且缺少必要的成员变量来存储数组内容。我先给你一个完整的可运行版本,再一步步解释关键修正点:

完整修正后的RandomArray类

import java.util.Random;

public class RandomArray {
    private int length;
    private int[] array; // 新增数组成员,用来存储生成的随机数

    // 构造方法:传入长度直接生成数组
    public RandomArray(int length) {
        this.length = length;
        generateRandomArray();
    }

    // 设置长度的方法,调用后会重新生成数组
    public void setLength(int length) {
        this.length = length;
        generateRandomArray();
    }

    // 私有方法:负责初始化数组并填充随机数
    private void generateRandomArray() {
        // 处理长度为0或负数的情况
        if (length <= 0) {
            array = new int[0];
            return;
        }
        array = new int[length];
        Random random = new Random();
        for (int i = 0; i < length; i++) {
            // 生成0到length之间的随机整数(包含0和length)
            // 如果想要0到length-1,就改成random.nextInt(length)
            array[i] = random.nextInt(length + 1);
        }
    }

    // 计算平均值
    public double getAverage() {
        if (length == 0) return 0;
        int sum = 0;
        for (int num : array) {
            sum += num;
        }
        return (double) sum / length;
    }

    // 获取最小值
    public int getMin() {
        if (length == 0) {
            throw new IllegalStateException("数组长度为0,无法获取最小值");
        }
        int min = array[0];
        for (int num : array) {
            if (num < min) {
                min = num;
            }
        }
        return min;
    }

    // 获取最大值
    public int getMax() {
        if (length == 0) {
            throw new IllegalStateException("数组长度为0,无法获取最大值");
        }
        int max = array[0];
        for (int num : array) {
            if (num > max) {
                max = num;
            }
        }
        return max;
    }

    // 重写toString方法,打印对象时能看到数组内容
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder("[");
        for (int i = 0; i < array.length; i++) {
            sb.append(array[i]);
            if (i != array.length - 1) {
                sb.append(", ");
            }
        }
        sb.append("]");
        return sb.toString();
    }

    // 测试用的main方法
    public static void main(String[] args) {
        RandomArray randomArray = new RandomArray(5);
        System.out.println("生成的数组:" + randomArray);
        System.out.println("平均值:" + randomArray.getAverage());
        System.out.println("最小值:" + randomArray.getMin());
        System.out.println("最大值:" + randomArray.getMax());
    }
}

关键修正点说明

  • 新增数组成员变量:原来的代码只存了length和单个randomNum,没法存储整个数组的内容,所以我加了private int[] array来保存生成的随机数。
  • 抽出生成数组的方法:把初始化数组和填充随机数的逻辑放到generateRandomArray()里,构造方法和setLength都可以调用它,避免重复代码。
  • 处理边界情况:加入了数组长度为0或负数的判断,避免出现异常。
  • 实现要求的方法:完成了平均值、最小值、最大值的计算,每个方法都考虑了空数组的情况。
  • 重写toString方法:默认的toString会打印类似[I@xxxx的哈希值,重写后能直接看到格式化后的数组内容,解决了你输出[]的问题(如果数组为空才会输出[],正常生成后会显示具体元素)。

测试效果

运行main方法后,你会看到类似这样的输出:

生成的数组:[3, 0, 5, 2, 5]
平均值:3.0
最小值:0
最大值:5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:48:17