Java:迭代多维数组概念

时间:2013-11-10 13:59:47

标签: java arrays multidimensional-array

我从最近3年开始尝试学习Java,但我发现我在Core java中非常弱。

我对以下代码有以下疑问,请帮助我。

  • 为什么nums[i][j]=(i+1)*(j+1);(i+1)*(j+1)+1一起使用。
  • 为什么首先array[]用于初始化for-each循环,即行for(int x[]:nums)..

代码:

//Use for-each style for on a 2-dimensional array
//Code source:From online site
public void foreachmultiarrya()
{

    int nums[][]=new int [3] [5];
    //give nums some values
              for(int i=0;i<3;i++)
        for(int j=0;j<5;j++)
            nums[i][j]=(i+1)*(j+1);
    int sum=0;
    for(int x[]:nums)
    {
        for(int y:x)
        {
            System.out.println("Value of y:"+y);
            sum+=y;
        }
    }
        System.out.println("Sum="+sum);   
}

3 个答案:

答案 0 :(得分:3)

why nums[i][j]=(i+1)*(j+1); , (i+1)*(j+1) is used with +1.

如果不与+1一起使用i为0或j为0的所有位置将为0.例如,i = 2且j = 0:如果+1 在那里使用,结果将是2 * 0 = 0.相反,它变为3。

这不是我们可以在这里回答的完整原因,而是取决于稍后如何在代码中使用二维数组。由于所有代码都是创建一个二维数组然后打印它的值,因此需要+1来打印出该结果。

why first array[] is used to intialize the for-each loop i.e in line for(int x[]:nums)..

因为在迭代2维数组时,每个位置都是一维数组。然后你必须遍历一维数组以打印出每个单独的项目(每个int)。

例如,考虑棋盘。当您遍历棋盘时,您将遍历列/行。然后,当你有一个列/行时,你必须迭代它以获得棋盘的每个方块。当您完成一个列/行的迭代后,外部迭代将继续进行下一个列/行。

答案 1 :(得分:1)

  

为什么nums [i] [j] =(i + 1)(j + 1); ,(i + 1)(j + 1)与+1一起使用。

这完全是任意的,它只是为二维数组赋值。

  

为什么第一个数组[]用于初始化for-each循环,即在行中   for(int x []:nums)..

因为它是一个二维数组,所以要访问所有元素,你必须先访问每个子数组,然后再访问这些子数组中的元素。

答案 2 :(得分:0)

<强> NUMS [i] [j] =(I + 1)的第(j + 1); ,(i + 1)(j + 1)

用于将值赋给数组。

为什么第一个数组[]用于初始化for-each循环,即(int x []:nums)。

它是针对循环的增强。如果你回到教科书,这个for循环被添加到JDK5中,旨在循环遍历一组对象,例如从开始到结束的严格顺序方式的数组。

for(int x []:nums){ }

这里的nums是一个2D数组,循环的每次迭代都会检索下一个元素,它是一个数组并存储在x中,这就是你需要将x声明为一维数组的原因。 x是一个临时变量,它指的是每次迭代中nums中的一个元素,nums的元素是1维数组,因此x的 type 必须声明为array。

相关问题