0

首先,这是代码:

public class Test{

   public static void main(String args[]){

    short[][] b = new short[4][4];
    short[][] big = new short[2][2];
    short b3 = 8;
    short b2 [][][][] = new short [2][3][2][2];

   // insert code here that will allow the code to compile

     }

}

这是教科书上的问题,这里有两个错误的答案:

b2[0][1][1] = b;

这里的解释是它试图分配一个二维数组,其中需要一个一维数组。有人可以解释一下吗?我根本看不到一维数组在代码中的位置。

b2[0][2][1] = b[1][0];

这个错误答案的解释是它试图在预期短数组的地方分配一个原始短。我对此感到困惑,因为我在这个答案中看不到原始的简短?

4

3 回答 3

3

在java中,多维数组实际上是一个数组数组。

你可以把它想象成每次你索引数组时(这意味着你把 [i] 放在它后面)你失去了一个维度。

b

给出一个二维数组,

b[i] 

给你一个一维数组,和

b[i][j]

给你一个short(这是一个原始的)

 b2[0][1][1]

也应该给你一个一维数组,但你试图把一个二维数组放在那里,这就是问题所在。

现在对于第二个错误答案,b[i][j]给你一个原语。这就是你试图把一维数组放在哪里的东西。

于 2012-12-04T05:36:41.910 回答
1

这是b2数组的结构。

xxxxxxxxxxxxxxxxxx P[xx] xxx xxxxxxxxxxxx

xxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxx

您试图在 b2[0][1][1] 的位置获取数组,这是一个具有两个元素的一维数组。但是,'b' 是二维数组。所以,它抛出了错误。

于 2012-12-04T06:23:30.660 回答
1

查看它的简单方法是划掉数组标记。将初始类型想象为 b[][][][],现在当你这样做时,b[0][1][1]你实际上是在“划掉”前三个 [],只剩b[]下一个短裤数组。您可以将其应用于其余部分,以了解它们为什么错了。

我用来教学生指针和数组效果很好的技巧。

于 2012-12-04T05:36:49.060 回答