我遇到了这个计算机科学问题,但它并没有按照我写下来的方式解决。这是代码:
int[][]grid = {{1,2,3,4},{5,6,7},{8,9},{10}};
for(int i = 0; i < grid.length; i++)
for(int j = 0; j < grid[i].length; j++)
grid[j][i] = grid[i][j];
System.out.println(Arrays.toString(grid[1]));
它应该将 grid[0] 更改为 {1, 5, 8, 10} 但它却什么也没做。为什么它跳过那个? i
不应该从 0 开始,所以第二个 for 循环应该以 grid[0][0] = grid[0][0]
开始,然后是 grid [1][0] = 网格[0][1]
?
最佳答案
这是因为您要在每次迭代中更改初始变量(网格),将输出放入一个单独的变量中,然后打印它。
解释:
grid = {{1,2,3,4},{5,6,7},{8,9},{10}};
在第一个子循环(循环j)之后
grid = {{1,2,3,4},{2,6,7},{3,9},{4}};
然后当它执行后续的 i 循环时,您可以看到它将数字放回原位。如果您从一个空数组开始作为输出变量,您将避免这个问题。
关于java - 为什么它会跳过数组索引 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36788537/