2

私はこのコードを持っています:

String[] whereyoufromarray = {"where", "you", "from"};

for (String whereyoufromstring : whereyoufromarray)
{
    if (value.contains(whereyoufromstring)) {
        //statement
    }
}

しかし、「値」に配列に含まれるすべての単語が含まれている場合にのみステートメントを実行する場合、「どこから来たのですか?」のようなものにしたいのです。現在、値が配列内の単語の 1 つだけを持っている場合、ステートメントが実行されます。

私はこれを行うことができますif (value.contains("where") && value.contains("you") && value.contains ("from"))が、これは不必要に長いようです。欠落している配列を使用した回避策が必要です。

さて、それは何ですか?

ps: 文法が下手ですみません。私は睡眠不足に苦しんでいます。

4

3 に答える 3

2

このような場合、私は通常、テストを行うためだけに関数を実装します。これをcontainsAll()と呼びましょう

public static boolean containsAll(String[] strings, String test)
{
    for (String str : strings)
        if (!test.contains(str))
            return false;
    return true;
}

そして今、あなたはただそうします

if (containsAll(whereyoufromarray, value))
    //statement
于 2013-06-12T21:04:49.800 に答える
2
String[] whereyoufromarray = {"where", "you", "from"};

boolean valueContainsAllWordsInArray = true;
for (String whereyoufromstring : whereyoufromarray) {

    // If one word wasn't found, the search is over, break the loop
    if(!valueContainsAllWordsInArray) break;

    valueContainsAllWordsInArray = valueContainsAllWordsInArray &&
                                   value.contains(whereyoufromstring);

}

// valueContainsAllWordsInArray is now assigned to true only if value contains
// ALL strings in the array
于 2013-06-12T20:58:39.930 に答える
0
 String[] whereyoufromarray = {"where", "you", "from"};
 int arrayLength = whereyoufromarray.length;
 int itemCount = 0;
 for(String whereyoufromstring : whereyoufromarray)
 {
    if(value.contains(whereyoufromstring))
    {
        itemCount++; 
    }
 }
 if (itemCount == arrayLength){
    //do your thing here   
 }

大まかなアイデア。これを証明するための IDE はありませんが、基本的には、カウンターを = 既知の配列の長さに設定し、配列内の各値をチェックして、一致が含まれているかどうかを確認できます..一致する場合は、別の値をインクリメントしますカウンター。最後に、カウンターをテストして配列の長さと一致するかどうかを確認します。例では、itemCount= 3 の場合、すべての値が一致します。2 の場合、1 つが欠落し、メソッドは実行されません。

于 2013-06-12T21:00:24.280 に答える