Java の missing return statement エラータイプの修正

Rupam Yadav 2023年10月12日
  1. Java で missing return statement エラーが発生するのはなぜですか
  2. Java の Missing Return Statement エラータイプの修正
Java の missing return statement エラータイプの修正

メソッドで iffor、または while ループを使用すると、Java コンパイラが missing return statement エラーを報告する場合があります。この記事では、これが発生する理由とその対処方法について説明します。

Java で missing return statement エラーが発生するのはなぜですか

最も一般的な Java エラーの 1つは、missing return statement です。

コンパイル中に発生するエラーです。ステートメントが示すように、この問題は通常、プログラムに return ステートメントがないことが原因で発生します。

このエラーを生成する可能性のある参照用のプログラムを見てみましょう。

これは、引数として渡された数値が素数であるかどうかを判別した後、String 型変数を返すメソッドです。このメソッドは、ifelse、および for ループを利用します。

このプログラムを注意深く見ると、if-else ループの最初のペアがあり、それぞれが String を返していることがわかります。else ループでは、for ループを実行し、ifelse を使用して String を返します。

一見大丈夫そうです。しかし、注意深く調べた後、for ループが失敗した場合に else ステートメントが何も返さないことがわかりました。

言い換えると、コンパイラは、else ループ内の for ループが String を返すことを認識していません。それはあいまいさを生み出します。

for ループが実行されて型が返される場合でも、コンパイラは、何も返さない可能性があると想定する必要があります。したがって、コンパイラのこの混乱を解消するために、else メソッドは String 型を返す必要があります。

Java のドキュメントによると、return 型でメソッドを宣言する場合は、メソッドの最後に return ステートメントが必要です。それ以外の場合、コンパイラは return ステートメントがありませんというエラーを表示します。

このエラーは、メソッドの return ステートメントを誤って省略した場合にスローされます。これは、メソッドに return タイプがないか、void タイプを使用して宣言されていないためです。

public class TestError {
  public static void main(String[] args) {
    System.out.println(Check_Prime(10));
    System.out.println(Check_Prime(5));
    System.out.println(Check_Prime(2));
    System.out.println(Check_Prime(1));
  }
  public static String Check_Prime(int number) {
    int i;
    if (number == 2) {
      return "Prime";
    } else {
      if (number < 2) {
        return "Not Prime";
      } else {
        for (i = 2; i <= number; i++) {
          if (number % i == 0) {
            return "Not Prime";
          } else {
            return "Prime";
          }
        }
      }
    }
  }
}

Java の Missing Return Statement エラータイプの修正

public class TestError {
  public static void main(String[] args) {
    System.out.println(Check_Prime(10));
    System.out.println(Check_Prime(5));
    System.out.println(Check_Prime(2));
    System.out.println(Check_Prime(1));
  }
  public static String Check_Prime(int number) {
    int i;
    int k = number / 2;
    if (number == 2) {
      return "Prime";
    } else {
      if (number < 2) {
        return "Not Prime";
      } else {
        for (i = 2; i <= k; i++) {
          if (number % i == 0) {
            return "Not Prime";
          } else {
            return "Prime";
          }
        }
        return "";
      }
    }
  }
}

出力:

Not Prime
Prime
Prime
Not Prime
著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java Error