我正在尝试使用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)
答案 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]);
}
}
}