我正在尝试理解Java中的多维数组,但我认为它适用于任何语言。请考虑我在网上找到的这段代码:
//************************************
// static array initialization
//************************************
byte[][] smallArray = { { 10, 11, 12, 13 },
{ 20, 21, 22, 23 },
{ 30, 31, 32, 33 },
{ 40, 41, 42, 43 }, };
// Display the array element at row 2, column 3
System.out.println(smallArray[1][2]);
// Value is 21
为什么是21?我以为应该是22。
我查找了这个问题,因为我想弄清楚在这种情况下长度的含义:
public class Pieces {
int thePieces[][][];
public Pieces(){
}
public int[][][] createPieces(){
/* pieces in order below
**** [0]
**
**
*
****
*
****
***
*
**
**
**
** [6]
*
*
*
*/
int myPieces [][][] =
{
{ //square
{0,0},
{1,0},
{1,1},
{0,1}
},
{ //T
{-1,0},
{0,0},
{0,1},
{1,0}
}
};
thePieces = myPieces;
return thePieces;
}
public void printPieces(){
System.out.println(thePieces[0][0].length);
}
}
我正在尝试通过创建俄罗斯方块克隆版来学习Java。我不明白为什么需要长度才能使用[][]. 这是我唯一能让它工作的方式。我尝试了Pieces[0][0][0].length但收到了一个我不理解的错误信息?
为什么我不必加[] [] []就可以引用?我在网上看到第一个数组“级别”被引用为myArray.length而不是myArray[].length.那么,myArray[][].length表示什么意思(似乎是第2、3个级别,但我得到的结果与我的期望不同)?
我运行了我的代码并得到了2。我不知道为什么是2。这是因为我在第三层有两个集合吗?我期望得到四个点,所以我预计会得到四个。
谢谢你帮我理解。
编辑:我弄清楚为什么是2了。它给了我内部集合中的两个点。如果我想得到四个,我会使用Pieces[0].length。但第一个例子呢?这是一个打字错误吗?