問題
次のコード断片をコンバイル、実行するとどうなりますか。
int[] array = {3,7,4,6,5};
int count = 0;
for (int element: array) {
switch (element) {
case 3: count++;
case 4: count++; break;
case 5: ++count;
case 6: ++count; break;
case 7: count++;
default: --count;
}
}
System.out.println(count);
選択肢
A)コンパイルエラーになる
B)7 が出力される
C)4 が出力される
D)5 が出力される
E)8 が出力される
E)6 が出力される
解答
A)コンパイルエラーになる
B)7 が出力される
C)4 が出力される
D)5 が出力される
E)8 が出力される
E)6 が出力される
解説
このコードをコンパイル、実行すると、D)5 が出力される という結果になります。
- 初期状態:
array
の要素は{3, 7, 4, 6, 5}
で、count
は0
から始まります。
- for-eachループとswitch文:
- 各
element
に対してswitch
文が実行されます。
- 各
- 各要素に対する処理:
- element = 3:
count++
(count
は1
に)case 4
に進むが、break
があるのでここで終了
- element = 7:
count++
(count
は2
に)default
に進み、--count
(count
は1
に)
- element = 4:
count++
(count
は2
に)break
で終了
- element = 6:
++count
(count
は3
に)break
で終了
- element = 5:
++count
(count
は4
に)break
で終了
- element = 3:
- 最終結果:
- 各処理が終わった後、
count
の最終値は5
になります。
- 各処理が終わった後、
結論
したがって、実行結果は D)5 が出力される です。
int[] array = {3,7,4,6,5}; //①3 ②7 ③4 ④6 ⑤5
int count = 0;
for (int element: array) {
switch (element) {
case 3: count++; //①1
case 4: count++; break; //①2 ③3
case 5: ++count; //⑤5
case 6: ++count; break; //④4 ⑤6
case 7: count++; //②3
default: --count; //②2
}
}
System.out.println(count); //6が出力
対象資格:Java SE17 認定資格