修復 Java 中缺少返回語句的錯誤型別
在方法中使用 if
、for
或 while
迴圈時,Java 編譯器可能會報告 missing return statement
錯誤。本文解釋了為什麼會發生這種情況以及如何處理它。
為什麼 Java 中會出現 missing return statement
錯誤
最常見的 Java 錯誤之一是 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
語句。否則,編譯器將顯示 missing return statement
錯誤。
當我們錯誤地省略了方法的 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