0

次のコードでは、指定された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;
        }
    }
}
4

3 に答える 3

6

可能なすべての実行パスがカバーされているわけではありません。たとえば、タイプが「JPG 画像」で、URL が JPG でも JPEG でもない場合、メソッドは何も返しません。

else最後の句を削除しfalse、メソッドの最後で単純に戻ります。

于 2012-12-16T14:31:37.343 に答える
4

簡単なことですが、埋め込まれた「leaf」ifステートメントの 1 つが式に対して false を返した場合、アプリケーションは return ステートメントに到達しません。forループも実行できません。

この問題を解決するにreturn falseは、 をメソッドの最後に移動してください。

于 2012-12-16T14:29:54.427 に答える
0

これがあなたの1つですif

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

else最後を取り除き、単に false を返すこともできます。

于 2012-12-16T14:31:52.873 に答える