
問題
次のコード断片をコンバイル、実行するとどうなりますか。
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 認定資格
