Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何引用多维数组?_Java_Multidimensional Array - Fatal编程技术网

Java 如何引用多维数组?

Java 如何引用多维数组?,java,multidimensional-array,Java,Multidimensional Array,我试图理解Java中的多维数组,但我认为它适用于任何语言。请考虑我在网上找到的这个片段: //************************************ // static array initialization //************************************ byte[][] smallArray = { { 10, 11, 12, 13 }, { 20,

我试图理解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。我不明白的是为什么使用[]需要长度。这是我上班的唯一途径。我尝试了图片[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}