【问题标题】:Using a loop to assign values to a 2d array使用循环将值分配给二维数组
【发布时间】:2016-12-03 06:05:30
【问题描述】:

我正在尝试使用 2 个循环将值分配给二维数组。目标是数字是 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)

【问题讨论】:

  • 黑白数字相同。 if 两边相同
  • OP 注意两个答案都是正确的,你的代码中有很多(编辑:好吧,我猜只是这两个)问题。
  • 提示:你也应该避免使用所有这些硬编码的值。至少定义类似private final static int BLACK = 16... 的东西(但最好使用带有“自定义”int 值的枚举)。然后以draw[i][b] = BLACK 为例。在这里有那个 x 变量是没有意义的!

标签: java arrays multidimensional-array


【解决方案1】:

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

不应该是for (int b = 0; b &lt; draw[i].length; b++) 吗?

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

【讨论】:

    【解决方案2】:

    在你的内部 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]); 
        }
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-09-18
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多