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

