【问题标题】:Array iteration [duplicate]数组迭代[重复]
【发布时间】:2018-01-04 17:57:11
【问题描述】:

我有一个关于二维数组迭代的问题。为什么这适用于 System.out.println(n) 而不是 System.out.println(row[n])?我正在尝试打印所有数字。

public class test
{
    public static void main(String[] args){
        int numbers[][] = {{1,2,3}, {4,5,6}};
        for (int [] row : numbers){

            for (int n: row){

                System.out.println(n);

            }
        }
    }
}

【问题讨论】:

  • 为什么这不起作用?在您的第一个 foreach 循环中,什么是行?索引还是数组的元素?那么为什么 n 会有所不同呢?
  • 因为n 不是行中的索引 - 它是行中的元素
  • 因为 n 在某些时候将具有值 6,row[6] 不存在。

标签: java arrays loops


【解决方案1】:

因为您最终会访问数组之外​​的数字。在这个例子中,第一次迭代是{1,2,3},第二次迭代是{4,5,6}。第一次迭代的前 2 次迭代(我们称之为x)将起作用,因为 x[1] 和 x[2] 仍在数组中。之后,您尝试打印不在数组中的 x[3]。

第二次迭代的迭代也是如此(我们称之为y)。 您正在尝试打印 y[4]、y[5]、y[6],但 y 只有 3 个值。

【讨论】:

    【解决方案2】:

    n 的第一个值是 1 并且 row[1] 存在,它是 rows 中的第二项(注意索引从 0 开始)但随后 n 将是 2 并且您的数组没有第二个元素,只有第 0 个和第一个,所以你会得到一个 ArrayIndexOutOfBoundsException

    【讨论】:

      猜你喜欢
      • 2021-10-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2011-07-08
      • 2013-09-11
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多