4

私は4つStringの変数を持っています:a、b、c、d。

そのうちの1つがそうであるかどうかを確認しnullますreturn false

私もです:

if(a==null || b ==null || c ==null || d ==null) return false;

これには簡単な方法がありますか?

(私はJavaを始めています)

4

5 に答える 5

4

メソッドが次のようになっている場合:

public boolean foo() {
    String a = "a", b = "b", c = "c", d = "d";
    if(a == null || b == null || c == null || d == null) {
        return false;
    }
    return true;
} 

次に、コードを削減できる方法があります。代わりにこれを行うことができます:

public boolean foo() {
    String a = "a", b = "b", c = "c", d = "d";
    return (a != null || b != null || c != null || d != null);
}

しかし、テストする文字列が 10 個、または 100 個と多い場合は、文字列を配列に入れてfor-eachループを使用すると、必要なコードが少なくてすみます。実際、次のメソッドは、stringだけでなく、あらゆるタイプのobjectで機能します。

public boolean containsNullObject(Object... objs) {
    // loop through each string
    for(Object o : objs) {
        if(s == null) { return false; } // return false if string is null
    }
    // if there was no instance of a null object, return true
    return true;
}

配列またはfor-eachループが何であるかわからない場合は、これらを見てください。

于 2012-12-25T03:04:02.933 に答える
3

いいえ、あなたの解決策は可能な限り単純です。

于 2012-12-25T02:56:30.670 に答える
1

これは、 foreach ループとString varargを使用してもう少しエレガントに表現できるようです。読みやすくなり、ステートメントを簡単にデバッグできます。

// method only returns true if all strings are non-null
public boolean all(String... strings) {
    for(String str : strings) {
        if(null == str) {
           return false;
        }
     }
     return true;
 }

次に、次のように呼び出します。

return all(a, b, c, d); // will return false if any of these are null, otherwise true.
于 2012-12-25T03:16:37.850 に答える
0

-条件を評価するために使用Non-Short circuit ORしています。この場合、これが最も適切で最も単純だと思います。

-つまり、あなたの解決策はそれが必要なものです。

于 2012-12-25T02:57:31.320 に答える
0

ifここでは冗長です。使用してくださいreturn !(a == null || b == null || c == null || d == null);

于 2012-12-25T04:31:02.600 に答える