Given the fragment:



String[][] arra = new String[3][];
arra[0] = new String[]{"rose", "lily"};
arra[1] = new String[]{"apple", "berry", "cherry", "grapes"};
arra[2] = new String[]{"beans", "carrot", "potato"};
// insert code fragment here

Which code fragment when inserted at line '// insert code fragment here', enables the code to successfully change arra elements to uppercase?

A.

for(int i = 0; i < arra.length; i++){
    for(int j = 0; j < arra[i].length; j++){
        arra[i][j] = arra[i][j].toUpperCase();
    }
}
B.
for(int i = 0;i < 3; i++){
    for(int j=0; j < 4; j++){
        arra[i][j] = arra[i][j].toUpperCase();
    }
}
C.
for(String a[] : arra[][]){
    for(String x : a[]){
        x.toUpperCase();
    }
}
D.
for(int i : arra.length){
    for(String x : arra){
        arra[i].toUpperCase();
    }
}

題解

選項A,索引值範圍和修改陣列的方式都是正確的。

選項B,內迴圈錯誤的固定索引範圍會使程式拋出ArrayIndexOutOfBoundsException。

選項C,「toUpperCase」方法並不會直接修改字串的內容,而是會將修改後的字串回傳,所以這樣做是沒有效果的。

選項D有嚴重錯誤的語法,for迴圈無法這樣使用。