問題集を見ていたのですが、どうしても理解不能な部分があったので質問します。
次のプログラムをコンパイル、実行した時の結果として正しいものを選びなさい。
java
1import java.until.ArrayList; 2public class Main{ 3 public static void main(String[] args){ 4 ArrayList<String> list = new ArrayList<>(); 5 list.Add('A'); 6 list.Add('B'); 7 list.Add('C'); 8 for(String str:list){ 9 if("B".equals(str)){ 10 list.remove(str); 11 }else{ 12 System.out.println(str); 13 } 14 } 15 } 16}
回答
A.[A][C]と表示される
B.[A][B][C]と表示される
C.[A]表示される
D.コンパイルエラー
E.実行時に例外がスローされる
※答えはC
java
1import java.until.ArrayList; 2public class Main{ 3 public static void main(String[] args){ 4 ArrayList<String> list = new ArrayList<>(); 5 list.Add('A'); 6 list.Add('B'); 7 list.Add('C'); 8 list.Add('D'); 9 list.Add('E'); 10 for(String str:list){ 11 if("C".equals(str)){ 12 list.remove(str); 13 } 14 } 15 for(String str:list){ 16 System.out.println(str); 17 } 18 } 19}
回答
A.[A][B][D][E]と表示される
B.[A][B][C][D][E]と表示される
C.[A][B][E]表示される
D.コンパイルエラー
E.実行時に例外がスローされる
※回答はE
解説では、list.remove(str);の時点でスローが発生すると書かれているのですが、それが理由なら1つ前の問題でもスローが発生するのではないかと思うのですが、なぜ違うのかさっぱりわかりません。
詳しくわかる方、回答よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー