【发布时间】:2016-10-22 03:09:59
【问题描述】:
我正在尝试生成一个 8 x 8 矩阵。矩阵的每个元素都需要有一个值为 1 的值,除了每一列上的一个元素设置为 0,通过生成 0-7 之间的随机 int 来选择一个元素。
我运行代码时得到的结果:
1 1 1 1 1 1 1 1
1 1 1 0 1 1 1 1
1 1 0 1 1 1 1 1
1 0 1 1 1 1 1 1
1 0 1 1 1 1 1 1
1 0 0 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 0 1 1
我的矩阵应该是这样的:
1 1 1 1 1 1 1 1
1 1 0 1 1 1 1 1
1 1 1 1 1 0 1 0
0 1 1 1 1 1 1 1
1 1 1 0 1 1 0 1
1 0 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 0 1 1 1
代码
for (int[] row: grid)
Arrays.fill(row, 1);
for (int i=0; i<grid.length; i++) {
int j = getRandom();
grid[i][j] = 0;
}
// print matrix
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++)
System.out.format("%2s%2d%2s", " ", Main.grid[i][j], " ");
System.out.println();
}
【问题讨论】:
-
有什么问题?
-
@Alex 如果您运行代码,您会看到它跳过了一些列或在同一列中创建了两个 0 值。
-
啊好的。这是因为您将这两个任务都放在最内层循环中,导致它们都在每个单元格中运行一次。您需要在每个单元格上将单元格设置为 1,但您只需每列选择一次 0
-
请注意,您的第二个示例在所有 1 的行/行中都有重复
-
@Rogue OP 正在显示实际结果并将其与预期结果进行比较