Java の missing return statement エラータイプの修正
メソッドで if
、for
、または while
ループを使用すると、Java コンパイラが missing return statement
エラーを報告する場合があります。この記事では、これが発生する理由とその対処方法について説明します。
Java で missing return statement
エラーが発生するのはなぜですか
最も一般的な Java エラーの 1つは、missing return statement
です。
コンパイル中に発生するエラーです。ステートメントが示すように、この問題は通常、プログラムに return ステートメントがないことが原因で発生します。
このエラーを生成する可能性のある参照用のプログラムを見てみましょう。
これは、引数として渡された数値が素数であるかどうかを判別した後、String
型変数を返すメソッドです。このメソッドは、if
、else
、および for
ループを利用します。
このプログラムを注意深く見ると、if-else
ループの最初のペアがあり、それぞれが String
を返していることがわかります。else
ループでは、for
ループを実行し、if
と else
を使用して 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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn