5

一連の変数を 1 つの静的変数と比較したいとしましょう。通常は次のようにします。

int w = 0;
int x = 1;
int y = 1;
int z = 2;
if(w == x || w == y || w == z){/*more code here*/}

しかし、それは非常に長くなる可能性があり、必要ではないようです。次のようなことを行う方法はありますか:

 if(w == (x || y || z)){/*more code here*/}

このような方法もあると思いたいです。

4

4 に答える 4

3

受け入れられた答えがありますが、私も自分のやり方を共有したいと思います:

方法1は、受け入れられた回答に似ています。ただし、リストを使用する代わりに、セットを使用します。==

// make it a static final member if semantically possible
Set<Integer> ALL_VALUES = new HashSet<Integer>(Arrays.asList(a,b,c,d,e,f,g,h));

//.....

if (ALL_VALUES.contains(w)) {
  //... do something
}

方法 2 は、次のような小さなユーティリティ関数を作成することです。

public static <T> boolean sameAsAny(T value, T... possibleValues) {
  for (T p : possibleValues) {
    if (value == p) {
      return true;
    }
  }
  return false;
}

このようなユーティリティを使用すると、次のようなことができます。

if (sameAsAny(w, x, y, z)) 
于 2013-07-02T02:23:11.047 に答える
0

次のようにフォーマットすることをお勧めします。

if(w == x ||
   w == y ||
   w == z)

条件を分割するのに役立ち、読みやすくなります。

于 2013-07-02T01:31:28.173 に答える
0

これは Java では許可されていません。ただし、 droolsなど、いくつかのルールベースのエンジンを調べることができます。

于 2013-07-02T02:26:53.143 に答える