Given:
public class TestTry {
public static void main(String[] args) {
StringBuilder message = new StringBuilder("hello java!");
int pos = 0;
try {
for (pos = 0; pos < 12; pos++) {
switch (message.charAt(pos)) {
case 'a':
case 'e':
case 'o':
String uc = Character.toString(message.charAt(pos)).toUpperCase();
message.replace(pos, pos + 1, uc);
}
}
} catch (Exception e) {
System.out.println("Out of limits");
}
System.out.println(message);
}
}
What is the result?
A.
hEllOjAvA!
B.
Hello java!
C.
Out of limits
hEllOjAvA!
hEllOjAvA!
D. Out of limits
題解
第4行的字串為「hello java!」,共有11個字元,可知字串長度是11。
第7行開始的for迴圈,pos變數的值為0,1,2,3,...,11,迴圈會執行12次。
第8行開始的switch,會在每次迴圈執行的時候會把字串中對應位置的字元「a」、「e」、「o」轉成大寫。但是當pos變數為11的時候,第8行會因為要取得的字元索引位置超過字串本身的長度而拋出例外,例外會在第16行開始被接住,而先輸出「Out of limits」。
最後,第19行才會輸出將「hello java!」中所有的「a」、「e」、「o」字元轉成大寫後的結果。