Java 如何引用多维数组?
我试图理解Java中的多维数组,但我认为它适用于任何语言。请考虑我在网上找到的这个片段:Java 如何引用多维数组?,java,multidimensional-array,Java,Multidimensional Array,我试图理解Java中的多维数组,但我认为它适用于任何语言。请考虑我在网上找到的这个片段: //************************************ // static array initialization //************************************ byte[][] smallArray = { { 10, 11, 12, 13 }, { 20,
//************************************
// 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。我不明白的是为什么使用[]需要长度。这是我上班的唯一途径。我尝试了图片[0][0][0]。长度,但出现了一个我不理解的错误
为什么我不需要输入[]来获得参考?我在网上看到数组的第一个“级别”被引用为myArray.length,而不是myArray[].length。那么,我对myArray[]].length(看起来是第二、第三级,但我没有得到我所期望的)说些什么呢
我运行了我的计件代码,得到了2。我不知道为什么是两个。是因为我在第三关有两盘吗?我希望得到四分,因为这四组分数
谢谢你帮助我理解
编辑:我知道为什么是两个了。它给了我最里面的两个点。如果我想要四个,我会使用片[0]。长度。但是第一个例子呢?是打字错误吗
为什么是21?我以为会的
二十二,
22是正确的--我运行了代码来验证它
索引引用数组元素,从外部元素到内部元素。所以
myPieces[0]
是{0,0},{1,0},{1,1},{0,1}
(一个包含数组的数组),
myPieces[0][0]
是{0,0}
(一个包含int的数组),并且
myPieces[0][0][0]
是0
(一个int)
为什么是21?我以为会的
二十二,
这个例子是错误的。22岁
我尝试了图片[0][0][0]。长度,但出现了一个我不理解的错误
这需要一点解释。当你说:
int[][][] thePieces = { ... }
您正在将一个名为thePieces的变量声明为int数组的数组。听起来很有趣。无论如何,thePieces.length是有效的,因为thePieces是某种数组。取消对数组的引用时,如下所示:
thePieces[index]
你得到一个整数数组,你可以在上面调用length,因为它是一个数组。因此:
thePieces[index0][index1]
是一个整数数组,您可以对其调用length(我希望您现在看到一个模式)
提供一个普通的旧int,它没有长度属性
我运行了我的计件代码,得到了2。我有
不知道为什么是两个。是因为我
第三关有两盘吗?我
预计会有四个,因为
四组点
你打电话:
System.out.println(thePieces[0][0].length);
它打印2,因为这些部分[0]指向此数组:
{ //square
{0,0},
{1,0},
{1,1},
{0,1}
}
它将返回4(如果调用片段[0].length)。但是,第[0][0]部分指出:
{0, 0}
它的长度为2。正如其他海报所指出的,您认为它应该输出为“22”是正确的
作为一个旁注,除非你有A,否则你应该考虑使用java集合中的一个而不是数组。可能是一个向量向量(即:
Vector
)。使用数组并不是不正确的,但是我个人觉得使用集合比使用数组容易得多。我想这只是一个输入错误。谢谢。我想我现在明白了。如果我使用[][],我没有长度,只有一个值,因为这是对数组数组中特定项的引用。我可以使用(我猜)int myInt=thePieces[0][1][0],但不可以使用.length,因为您已经说明了原因。事实上,这是获取值的唯一方法,[][]之外的所有其他方法都必须使用长度(或者对数组有意义的其他方法),因为它们只指向某个级别的数组(数组的数组,数组的数组,数组的数组)。我希望在了解如何使用数组后尝试一下。非常感谢。
{0, 0}