随机数组生成

问题描述

我正在尝试创建一个数组,并在整个数组中随机填充 0 或 1。您将在下面找到代码。我对 Java 很陌生,所以任何帮助将不胜感激。

private static void randHouse() {
    int rows = 4;
    int columns = 5;
    int i = 0;
    int y = 0;
    int [][] myList = {
            {0,0},{0,0}
    };
    System.out.println(Arrays.deepToString(myList)); // just prints the array

    for (i : rows); {
        for (y : columns);{
            myList[i][y] = (int)random() * 10;
        }
    }
}

我目前收到错误: java:for循环的错误初始化器

解决方法

使用流是最简单的 (imo)。

int r = 4;
int c = 5;
int[][] result = randHouse(r,c);
for (int[] row : result) {
    System.out.println(Arrays.toString(row));
}

打印类似的东西

[1,1,1]
[0,1]
[1,0]
  • IntStream 遍历行
  • 内部 rand 调用生成每一行 1 和 0。
  • 然后将它们组合成一个数组。
private static int[][] randHouse(int r,int c) {
    Random rand = new Random();
    return IntStream.range(0,r)
            .mapToObj(i -> rand.ints(c,2).toArray())
            .toArray(int[][]::new);
}

注意:在您的原始问题中,(int)Math.random()*10 将首先将随机值转换为 0,然后乘以 10。所以您得到的只是零。如果您执行以下 (int)(Math.random()*10),您将获得介于 09 之间的值。您应该使用 10 而不是 2

,
for (int i = 0; i < rows.length; i++) {
    for (int j = 0; j < columns.length; j++) {
        myList[i][j] = (int)random() * 10;
    }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...