2017-01-19 5 views
0

私は文字列arraylistを持っています。私はいくつかのケースのために、正確に文字列と一致しており、ちょうど使用はいくつかのケースのために含まれてい条件演算子の数を減らす

private final List<String> fruits = new ArrayList<String>(); 

は、今私はArrayListの

while ((line = in.readLine()) != null) { 
    if (!(line.equals(fruits.get(0)) || line.contains(fruits.get(1)) || 
     line.contains(fruits.get(2)) || line.contains(fruits.get(3)) || 
     line.contains(fruits.get(4)) || line.contains(fruits.get(5)) || 
     line.contains(fruits.get(6)) || line.equals(fruits.get(7) || line.equals(fruits.get(8)))) { 
      //     "DO SOMETHING" 
    } 
} 

内の項目に対して、着信ラインを比較するために、考えてみましょう。しかし、やっと私はif節に3つ以上の条件を持つべきではありません。

+2

ループを使用したことはありますか? – Kayaman

+0

正規表現を作成します。 –

+0

ifステートメントを使用してメソッドを記述しますが、条件演算子は使用しません。 –

答えて

0

)または含まれています:あなたは、あなたがこのようにそれを確認することができますlinelist

public boolean isFound(List<String> f, String l){ 
    for(int i=0;i<f.size();i++){ 
     if(l.contains(f.get(i)){ 
      return true; 
     } 
    } 
    return false; 
} 

からサブセットが含まれているかどうかを確認するための簡単な方法を行うことができますあなたの果物が増えているときは、リストを地図に変えて果物ごとに目的の方法を保存することを検討してください。

private enum Method { 
    CONTAINS, 
    EQUALS; 
} 

@Test 
public void testFruits() throws IOException { 
    Map<String, Method> methodByFruit = new HashMap<>(); 
    methodByFruit.put("apple", Method.CONTAINS); 
    methodByFruit.put("pear", Method.CONTAINS); 
    methodByFruit.put("grenade apple", Method.CONTAINS); 
    methodByFruit.put("banana", Method.EQUALS); 
    methodByFruit.put("kiwi", Method.EQUALS); 

    BufferedReader in = new BufferedReader(new StringReader("kiwi2")); 

    String line; 
    while ((line = in.readLine()) != null) { 
     boolean success = false; 
     for (Entry<String, Method> entry : methodByFruit.entrySet()) { 
      String fruit = entry.getKey(); 
      Method method = entry.getValue(); 
      if (method == Method.EQUALS) { 
       success = line.equals(fruit); 
      } else { 
       success = line.contains(fruit); 
      } 
      if (success) { 
       break; 
      } 
     } 
     if (!success) { 
      System.out.println("DO SOMETHING"); 
     } 
    } 
} 
1

要件は不明です。等価チェックがインデックス7または8のみのものかどうか。しかし、とにかく私の提案です。 )(あなたはどちらか等号を(使用したいので

if(isFound(fruits, line) || fruits.contains(line)){ 
    //Do Something 
} 
+0

等しいはインデックス0,7,8に対してのみ使用されます – prithivraj