修復 Java 中缺少返回語句的錯誤型別

Rupam Yadav 2023年1月30日 2022年4月27日
  1. 為什麼 Java 中會出現 missing return statement 錯誤
  2. 修復 Java 中的 Missing Return Statement 錯誤型別
修復 Java 中缺少返回語句的錯誤型別

在方法中使用 ifforwhile 迴圈時,Java 編譯器可能會報告 missing return statement 錯誤。本文解釋了為什麼會發生這種情況以及如何處理它。

為什麼 Java 中會出現 missing return statement 錯誤

最常見的 Java 錯誤之一是 missing return statement

這是編譯過程中發生的錯誤。正如該語句所暗示的,該問題通常是由程式中缺少 return 語句引起的。

讓我們以一個可以產生此錯誤的程式作為參考。

這是一個在確定作為引數傳遞的數字是否為素數後返回 String 型別變數的方法。該方法利用了 ifelsefor 迴圈。

當我們仔細看這個程式時,我們可以看到第一對 if-else 迴圈,每個都返回一個 String。在 else 迴圈中,我們執行 for 迴圈,然後使用 ifelse 返回一個 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
Author: 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