Given the code fragment:



// insert code here
arr[0] = new int[3];
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;

arr[1] = new int[4];
arr[1][0] = 10;
arr[1][1] = 20;
arr[1][2] = 30;
arr[1][3] = 40;

Which two statements, when inserted independently at line // insert code here, enable the code to compile?

A.

int[][] arr = null;
B.
int[][] arr = new int[2];
C.
int[][] arr = new int[2][];
D.
int[][] arr = new int[][4];
E.
int[][] arr = new int[2][4];
F.
int[][] arr = new int[0][4];

題解

從程式第6到15行,可以斷定這arr變數參考到的陣列大小至少為2 x 4。

選項A,沒有實體化二維陣列物件,會在之後存取陣列元素時拋出NullPointerException。

選項B,產生一維陣列的物件,使用二維陣列的型態來儲存會發生編譯錯誤。

選項C,正確的二維陣列實體化方式,大小也符合需求

選項D,錯誤的二維陣列實體化方式。

選項E,正確的二維陣列實體化方式,大小也符合需求。

選項F,正確的二維陣列實體化方式,但是大小不符合需求。