問題
次のコード断片をコンバイル、実行するとどうなりますか。
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 が出力される
解説
各要素に対するスイッチ文の処理
element = 3
:count++
でcount
は 1 に。- 次の
case
に進む(break
がないため)。 case 4:
に入るが、count++
で 2 に。break
でスイッチを終了。
element = 7
:case 7:
に入り、count++
で 3 に。default:
にも入る(break
がないため)、--count
で 2 に。
element = 4
:case 4:
に入り、count++
で 3 に。break
でスイッチを終了。
element = 6
:case 6:
に入るが、break
がないため、count++
で 4 に。break
でスイッチを終了。
element = 5
:case 5:
に入り、++count
で 5 に。- 次の
case
に進む(break
がないため)。 case 6:
に入るが、break
がないため、count++
で 6 に。break
でスイッチを終了。
最終的な count の値
最終的な count
の値は 6 です。
結果
したがって、出力は E)6 が出力される です。
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 認定資格