java - 为什么它会跳过数组索引 0?

标签 java arrays for-loop

我遇到了这个计算机科学问题,但它并没有按照我写下来的方式解决。这是代码:

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/

相关文章:

javascript - 比较数组中的字符串

c++ - 返回字符常量数组中最后一次出现的字符的索引

r - 查找字符串列表的每个元素与 R 中向量的每个字符串之间的匹配(避免 'for' )

javascript - 将节点与中断标签一起附加到文档片段

java - 获取滚动金额

java - 使用 Quartz 动态调度作业

java - 如何在 Java 中反转 System.loadLibrary

java - 如果 “scheme:/path” 形式的 URI 有效吗?

javascript - 如何使用 lodash 或下划线删除两个数组中的同一个对象?

java - android 文件中存储字符串与字节数组的文件大小不同