我遇到了这个计算机科学问题,并没有按照我写下来的方式来解决问题。这是代码:
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] = grid[0][1]
?
答案 0 :(得分:3)
这是因为您在每次迭代时更改初始变量(网格),将输出放入单独的变量然后打印出来。
说明:
grid = {{1,2,3,4},{5,6,7},{8,9},{10}};
在第一个子循环(循环j)之后
grid = {{1,2,3,4},{2,6,7},{3,9},{4}};
然后,当它执行后续的i循环时,您可以看到它将数字放回原来的位置。如果以空数组作为输出变量开始,则可以避免此问题。