return が足りないメソッド
このコードを実行するとどうなるか。
public class Main {
static int sign(int n) {
if (n > 0) {
return 1;
} else if (n < 0) {
return -1;
}
}
public static void main(String[] args) {
System.out.println(sign(3));
}
}
- A
1と出力される - B
0と出力される - C 実行時に例外が発生する
- D コンパイルエラーになる
正解と解説を見る
正解: D
- A: 実行まで進まないので、何も出力されません。
- B: 実行まで進まないので、何も出力されません。
- C: return の不足はコンパイル時に見つかります。
- D: n が 0 のとき return されずに終わってしまうので、コンパイルエラーです。
ポイント
- n が 0 のとき return せずに最後まで来てしまいます。戻り値のあるメソッドは、すべての経路で return が必要です。