簡體   English   中英

遞歸方法返回一個不編譯的int

[英]Recursive method returning an int not compiling

目前,我正在學習Java,並且有一個任務,我應該創建一個方法,該方法一直要求用戶輸入,直到輸入兩個關鍵字之一。 然后,根據返回的int值。

public static int getCommand(){
    String command = IOTools.readString("Enter Command!");
    if (command.equals("exit")){
        return 1;
    } else if (command.equals("shift")){
        return 0;
    } else {
        getCommand();
    }
}

我遇到的問題是eclipse告訴我將返回類型更改為void或在if塊之后添加return語句。 在此處輸入圖片說明 我的遞歸方法有什么問題嗎?

您在遞歸調用中缺少return語句

public static int getCommand(){
    String command = IOTools.readString("Enter Command!");
    if (command.equals("exit")){
        return 1;
    } else if (command.equals("shift")){
        return 0;
    } else {
        return getCommand(); // Added return here
    }
}

返回聲明在這里丟失

else {
   getCommand();
}

方法的所有路徑都需要返回某些內容。

您需要在最后一種情況下添加return類型

public static int getCommand(){
    String command = IOTools.readString("Enter Command!");
    if (command.equals("exit")){
        return 1;
    } else if (command.equals("shift")){
        return 0;
    } else {
        return getCommand();
    }
}

此函數getCommand(); 調用返回的是int值,但在else情況下則不是,因此如果控件落在else情況下,則盡管無法確保getCommand();仍將執行遞歸函數調用getCommand(); 由於else情況,將返回int值,因此編譯器將檢測到錯誤,並根據這種情況return類型不為void ,java說

函數中的每個執行路徑都必須導致RETURN語句

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM