Tôi đang cố gắng hiểu mảng đa chiều trong Java, nhưng tôi nghĩ nó áp dụng cho bất kỳ ngôn ngữ nào. Vui lòng xem xét đoạn mã này tôi tìm thấy trên web:Tôi làm cách nào để tham chiếu các mảng đa chiều?
//************************************
// 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
Tại sao lại là 21? Tôi nghĩ rằng nó sẽ là 22.
Tôi nhìn này lên vì tôi đang cố gắng để tìm ra những gì chiều dài có nghĩa là trong bối cảnh này:
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);
}
}
Tôi đang cố gắng tìm hiểu java bằng cách tạo ra một bản sao Tetris. Những gì tôi không hiểu là lý do tại sao độ dài là cần thiết để sử dụng [] []. Đó là cách duy nhất tôi có thể làm việc. Tôi đã thử ThePieces [0] [0] [0] .length nhưng có lỗi mà tôi không hiểu?
Tại sao tôi không phải đặt [] [] [] để nhận tham chiếu? Tôi thấy trực tuyến, nơi "cấp độ" đầu tiên của mảng được tham chiếu myArray.length thay vì myArray []. Những gì sau đó tôi nói với myArray [] [] chiều dài (có vẻ như 2, 3 cấp độ nhưng tôi không nhận được những gì tôi mong đợi)?
Tôi chạy mã mảnh của mình và nhận được 2. Tôi không biết tại sao lại là hai. Có phải vì tôi có hai bộ ở cấp độ thứ ba không? Tôi dự kiến sẽ nhận được bốn vì bốn bộ điểm.
Cảm ơn bạn đã giúp tôi hiểu.
EDIT: Tôi đã tìm ra lý do tại sao đó là hai. Nó cho tôi hai điểm trong bộ trong cùng. Nếu tôi muốn bốn tôi sẽ sử dụng các [.] Độ dài. Nhưng còn ví dụ đầu tiên thì sao? Nó là một lỗi đánh máy?
Tôi đoán nó chỉ là một lỗi đánh máy. Cảm ơn bạn. – johnny