2017-02-18 16 views
1

今日の句をで実装します。 Javaには4つの条件をすべて組み合わせて、それを私の要求を満たす単一の条件として書く方法がありますか?たとえば、はどのようにJavaで、私はこのコードを書くことに出くわした

if(fieldName IN ("Name", "ID", "password", "email"){ 
    //do something. . 
} 
. 
. 
. 

これを達成する方法や回避策はありますか?

+0

あなたの文は 'if(false){...}'にするだけです。理由を理解するにはhttp://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-javaを読んでください。あなたの実際の質問に答えるために、Javaにはあなたが探している構文の種類はありませんが、[Set](http://docs.oracle.com/javase/8/docs/api/java/)を使うことができます。 util/Set.html)。 – ajb

答えて

4

考えられる値のListを定義し、必要な値がリストに存在するかどうかを確認できます。

List<String> fieldValues = Arrays.asList("Name","ID","password","email"); 
if(fieldValues.contains(fieldName)) { 

} 

ワンライナー:if(Arrays.asList("Name","ID","password","email").contains(fieldName)) { }

Stringの等価性をチェックするために==を使用しないでください。

+1

私はこれが最良の一行の回避策だと信じています。 。 –

0

頻繁に変更されない静的プロパティを使用している場合。これらのプロパティを同じキーと値としてマップに取り込むことをお勧めします。

if(someMap.get(fieldName)!=null) 
{ 
    //do something 
} 
else 
{ 
    //do something else 
} 

これらのプロパティをいくつかのファイルに書き込んで、プログラム起動時にPropertiesクラスを使用してロードして使用することもできます。

1

まず、このコードは間違っています。

if ("Name" == fieldName || "ID" == fieldName 
      || "password" == fieldName || "email" == fieldName) { 

==を使用して文字列を比較することは、ほとんどの場合誤っています。

は、テストを書くための最も効率的な(正しい)道がある、と述べた:

switch (fieldName) { 
case "Name": case "ID": case "password": case "email": 
    // do something 
    break; 
default: 
    // do something else 
} 

これは、コンパイラは、それが最も効率的な方法であると考えるならば、ハッシュセットは、シーンを尻使用しますが、必要がありますセットは一度しか構築されません。より簡潔なソリューションでは、テストを行うたびに一時的なセット/リストを表すデータ構造を構築して破棄する可能性が最も高くなります。

0

私が知っている方法はありません。関数を定義して使用することは可能です。以下のコードを参照してください:

boolean stringInArray(String src, String[] strArray) { 
    if (strArray == null || src == null) 
    return false; 
    for (int i = 0; i < strArray.length; i++) { 
    if (src.equals(strArray[i])) 
     return true; 
    } 
    return false; 
} 

// Print false 
System.out.println(stringInArray("John", 
    new String[] { "Name", "ID", "password", "email"})); 

// Print true 
System.out.println(stringInArray("ID", 
    new String[] { "Name", "ID", "password", "email"})); 
関連する問題