Given the following class:
public class CheckingAccount {
public int amount;
public CheckingAccount(int amount) {
this.amount = amount;
}
public int getAmount() {
return amount;
}
public void changeAmount(int x) {
amount += x;
}
}
And given the following main method, located in another class:
public static void main(String[] args){
CheckingAccount acct = new CheckingAccount((int)(Math.random() * 1000));
//line n1
System.out.println(acct.getAmount());
}
Which three lines, when inserted independently at line n1, cause the program to print a 0 balance?
A.
this.amount = 0;
B.
amount = 0;
C.
acct(0);
D.
acct.amount = 0;
E.
acct.getAmount() = 0;
F.
acct.changeAmount(0);
G.
acct.changeAmount(-acct.amount);
H.
acct.changeAmount(-acct.getAmount());
題解
選項A,由於main方法是在不同的類別,因此使用「this」並不能存取到acct物件,會造成編譯錯誤。
選項B,amount因為沒有宣告,所以會造成編譯錯誤。
選項C,acct是物件變數,不是方法,無法這樣使用。
選項D,直接存取acct變數參考到的物件之欄位,是可行的作法。
選項E,方法不能這樣使用,會造成編譯錯誤。
選項F,因為無法保證amount一開始是0,所以將它加0並不一定可以輸出0。
選項G,amount = amount - amount,所以結果會是0。
選項H,理由同選項G。