3 回答
TA贡献1859条经验 获得超6个赞
尝试在任何循环内的数组中初始化数组,例如:
int articles[][] = new int[50][];
for (int i = 0; i < 50; i++) {
articles[i] = new int[(int) Math.floor(Math.random() * 30 + 1)];
}
TA贡献1942条经验 获得超3个赞
我建议您研究 中的实用方法java.util.Arrays。它是处理数组的辅助方法的金矿。从 1.8 开始就有了这个:
int articles[][] = new int[50][];
Arrays.setAll(articles, i -> new int[(int)Math.floor(Math.random() * 30 + 1)]);
在这个问题案例中,使用 lambda 并不比普通循环更有效,但通常可以提供更简洁的整体解决方案。
我还建议不要自行扩展double(int请参阅来源Random.nextInt()并自行决定)。
Random r = new Random();
int articles[][] = new int[50][];
Arrays.setAll(articles, i -> new int[r.nextInt(30)]);
TA贡献1851条经验 获得超4个赞
要创建一个行数恒定但行长度随机的数组,并用随机数填充它:
int rows = 5;
int[][] arr = IntStream
.range(0, rows)
.mapToObj(i -> IntStream
.range(0, (int) (Math.random() * 10))
.map(j -> (int) (Math.random() * 10))
.toArray())
.toArray(int[][]::new);
// output
Arrays.stream(arr).map(Arrays::toString).forEach(System.out::println);
[3, 8]
[2, 7, 6, 8, 4, 9, 3, 4, 9]
[5, 4]
[0, 2, 8, 3]
[]
添加回答
举报