Given the code fragment:



public class Test {

    public static List data = new ArrayList();

    // insert code here
    {
        for (String x : strs) {
            data.add(x);
        }
        return data;
    }

    public static void main(String[] args) {
        String[] d = {"a", "b", "c"};
        update(d);
        for (String s : d) {
            System.out.print(s + " ");
        }
    }
}

Which code fragment, when inserted at // insert code here, enables the code to compile and and print a b c?

A.

List update (String[] strs)
B.
static ArrayList update(String[] strs)
C.
static List update (String[] strs)
D.
static void update (String[] strs)
E.
ArrayList static update(String[] strs)

題解

題目原先提供的程式,第7行的strs會因為沒有宣告而編譯錯誤。第10行的return會因為目前程式區塊不是可以回傳List物件的方法而編譯錯誤。第15行會因為找不到update方法而編譯錯誤。

為了解決編譯錯誤的問題,必須要在第5行完成方法的宣告。方法的名稱叫作「update」,因為要可以直接在main方法中使用,所以一定是類別靜態(static)方法,要用static修飾。update方法只能接受字串陣列引數的傳入,所以要設定一個字串陣列的參數,至於參數名稱可以從第7行知道,就是「strs」這個變數名稱。第10行需要回傳List物件,所以update方法的回傳值型態應該要宣告成List或是List的父類別型態。

選項A、B、D、E都不符合要求,只有選項C是正確的。