使用循环将值分配给2d数组

时间:2016-12-03 06:05:31

标签: java arrays multidimensional-array

我正在尝试使用2个循环来将值分配到2d数组中。目标是数字为0或16777215.当使用我所做的代码时,使用所有打印的300个值,16777215。我已经替换了if和else语句中的两个值,并且它已经继续。这些值应该在0到16777215之间随机选择。我目前的代码如下:

public static void main(String[] args) {
    int[][] draw = new int[400][300];
    for (int i = 0; i < draw.length; i++) {
        for (int b = 0; i < draw[i].length; i++) {
            if (Math.random() > 0.5) {
                int x = 16777215; // num for black
                                  // should normally be 0 but for trial purposes, I used 16777215
                draw[i][b] = x;
            } else {
                int x = 16777215; // num for white
                draw[i][b] = x;
            }
        }
    }
    for (int i = 0; i < draw.length; i++) {
        for (int b = 0; b < draw[i].length; b++) {
            System.out.println(draw[i][b]);
            //should be a random spread of 0 and 16777215 but 16777215 appears only every 300 lines in the output. 
        }
    }
}

编辑:首先出现在289,然后是300(前589,889)

2 个答案:

答案 0 :(得分:0)

你写了for (int b = 0; i < draw[i].length; i++)

不应该是for (int b = 0; b < draw[i].length; b++)

在每个位置初始化数组为0。这就是你看到这么多零的原因。

答案 1 :(得分:0)

在你的内部for循环中,你增加了i的值。

我认为你应该在你的内循环中使用变量b。

根据你的循环,你的循环序列将按如下方式运行

0,0

0,0

0,0 ....

1,0

1,0

如果你修改内循环如下

    for (int b = 0; b < draw[i].length; b++)

序列将是

0,0

0,1

... 0,2

1,0

1,1等等

更正代码:

public static void main(String[] args) {
int[][] draw = new int[400][300];
for (int i = 0; i < draw.length; i++) {
    for (int b = 0; b < draw[i].length; b++) {
        if (Math.random() > 0.5) {
            int x = 16777215;
            draw[i][b] = x;
        } else {
            int x = 16777215;
            draw[i][b] = x;
        }
    }
}
for (int i = 0; i < draw.length; i++) {
    for (int b = 0; b < draw[i].length; b++) {
        System.out.println(draw[i][b]); 
    }
}
}