問題
次のコードをコンパイル、実行するとどうなりますか。
public class Main {
public static void main(String... args) {
Object[] list = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
for (int i = 0; i < list.length; i++) {
if (!(list[i] instanceof String weekOfDay)) {
System.out.println(weekOfDay + "is not Week of day.");
} else {
System.out.print(switch (weekOfDay) {
case "Monday":
yield 'M';
case "Friday":
yield 'F';
case "Tuesday", "Thursday":
yield 'T';
case "Saturday", "Sunday":
yield 'S';
case "Wednesday":
yield 'W';
default:
yield 'N';
});
}
}
}
}
選択肢
A)変数 weekOfDay は if 句では参照できないのでコンパイルエラーになる
B)変数 weekOfDay は else 句では参照できないのでコンパイルエラーになる
C)83778487847083 が出力される
D)実行時に ArrayIndexOutOfBoundsException がスローされる
E)実行時に ClassCastException がスローされる
F)SMTWTFS が出力される
G)switch 式では char をリターンすることはできないのでコンパイルエラーになる
解答
A)変数 weekOfDay は if 句では参照できないのでコンパイルエラーになる
B)変数 weekOfDay は else 句では参照できないのでコンパイルエラーになる
C)83778487847083 が出力される
D)実行時に ArrayIndexOutOfBoundsException がスローされる
E)実行時に ClassCastException がスローされる
F)SMTWTFS が出力される
G)switch 式では char をリターンすることはできないのでコンパイルエラーになる
対象資格:Java SE17 認定資格