【问题标题】:Why does it skip array index 0?为什么它会跳过数组索引 0?
【发布时间】:2016-04-22 08:18:15
【问题描述】:

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

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] 开头?

【问题讨论】:

  • 要将 grid[0] 更改为 {1,5,8,10},您应该这样做 grid[i][j] = grid[j][i];

标签: java arrays for-loop


【解决方案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 循环时,您可以看到它会将数字放回原来的位置。如果你从一个空数组开始作为你的输出变量,你会避免这个问题。

【讨论】:

  • 显然如果出于任何原因需要,在循环处理完成后,您可以将输出变量内容分配回输入变量(网格)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 1970-01-01
  • 2017-11-10
  • 2013-05-29
  • 2015-05-27
  • 2018-05-28
相关资源
最近更新 更多