[英]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.