簡體   English   中英

函數不應該返回布爾值

[英]Function doesn't return boolean when it should

在以下代碼中,我檢查給定的URL是否以允許的文件類型(可能的類型:.jpg,.jpeg,.png和.gif)結尾。 類型列表保存在一個數組列表中,該列表包含來自UI的文本描述(例如“ JPG圖像”)。

我的意圖是使函數遍歷帶有說明的列表,並使用其相應的URL檢查方法檢查URL。

我希望這段代碼能夠正常工作,因為我相信已經考慮到每種情況:如果是JPG,PNG或GIF,則返回true,否則返回false。 它仍然存在錯誤:

Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem: 
This method must return a result of type boolean

這顯然意味着某處的回報出現了問題。 我在俯視什么?

private boolean isImageURL(ImageURL url) {
    for (String type : fileTypes) {
        if (type.equalsIgnoreCase("JPG Images")) {
            if (url.isJPG() || url.isJPEG()) {
                return true;
            }
        } else if (type.equalsIgnoreCase("PNG Images")) {
            if (url.isPNG()) {
                return true;
            }
        } else if (type.equalsIgnoreCase("GIF Images")) {
            if (url.isGIF()) {
                return true;
            }
        } else {
            return false;
        }
    }
}

未涵蓋所有可能的執行路徑。 例如,如果類型為“ JPG圖像”,但URL既不是JPG也不是JPEG,則該方法不返回任何內容。

刪除最后一個else子句,並在方法末尾簡單地返回false

好吧,很簡單,如果嵌入的“葉子” if語句之一對該表達式返回false,則應用程序不會返回return語句。 for循環也可能不會執行。

要解決此問題,請將return false移到方法的末尾,您應該會沒事的。

這是您的if之一:

    else if (type.equalsIgnoreCase("PNG Images")) {
        if (url.isPNG()) {
            return true;
        }
        //otherwise... return what? (error here, put return false here)
    }

您還可以擺脫else然后返回false。

暫無
暫無

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

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