首先,这是代码:
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];
这个错误答案的解释是它试图在一个预期短数组的地方分配一个原语short。我对这个感到困惑,因为我在这个答案中没有看到原始的短片?
答案 0 :(得分:3)
在java中,多维数组实际上是一个数组数组。
你可以把它想象成每次索引数组时(这意味着你把[i]放在它之后)就会失去一个维度。
b
给出一个二维数组,
b[i]
给你一个1维数组,
b[i][j]
给你一个short
(这是一个原始的)
b2[0][1][1]
也应该给你一个1维数组,但你试图在那里放一个二维数组,这就是问题所在。
现在对于第二个错误的答案,b[i][j]
给你一个原语。这就是你想要把1维数组放在哪里。
答案 1 :(得分:1)
通过划掉数组标记,简单的方法就是看它。将初始类型视为
b[][][][]
,现在当你b[0][1][1]
时,你实际上正在“越过”前三个[],只留下b[]
这是一系列短裤。您可以将其应用于其他人,看看他们错误的原因。
欺骗我用来教学生指针和阵列非常好。
答案 2 :(得分:1)
这是b2阵列的结构。
x x x x x x x x x x x x x x x x x x P [x x] x x x x x x x x x x x x x x x
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
您正在尝试将数组放在b2 [0] [1] [1]的位置,这是一个具有两个元素的一维数组。但是,'b'是二维数组。所以,它正在抛出错误。