我試圖生成一個8乘8的矩陣。除了每列設置爲0的一個元素之外,矩陣的每個元素都需要有一個值1,通過在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
@Alex如果您運行代碼,您會看到它跳過一些列或在同一列中創建兩個0值。 – PRCube
啊,好的。這是因爲你把這兩個任務都放在最裏面的循環中,導致它們每個單元都運行一次。你需要在每個單元格上將單元格設置爲1,但是你只需要每列選擇一個0 – Alex