0

特定の入力文字列を含むことに基づいて、特定の数の配列エントリを返すようにこれを取得しようとしています。

/**
* This method returns a list of all words from
* the dictionary that include the given substring.
*/
public ArrayList<String> wordsContaining(String text)
{
    ArrayList<String> contentCheck = new ArrayList<String>();
    for(int index = 0; index < words.size(); index++)
    {
        if(words.contains(text))
        {
            contentCheck.add(words.get(index));
        }
    }
    return contentCheck;
}

文字列ビットを含むエントリだけではなく、配列内のすべての値が異常に返される理由がわかりません。ありがとう!

4

2 に答える 2

3

あなたの状態:

if(words.contains(text))

textがリストにあるかどうかをチェックします。それはtrueすべての要素または要素のどれにも当てはまりません

あなたが望むのは:

if(words.get(index).contains(text))

それとは別に、拡張された for ステートメントを使用する方が良いでしょう:

for (String word: words) {
    if(word.contains(text)) {
        contentCheck.add(word);
    }
}
于 2013-10-24T15:51:13.553 に答える
1

コードに 2 つの問題があります

1つ目は、あなたが自分の状態をチェックインすることです

if(words.contains(text))text-リストにあるこのチェック

おそらくあなたが望むのは、リストの特定の項目が含まれていることを確認することですtext

public List<String> wordsContaining(String text)
{
    List<String> contentCheck = new ArrayList<String>();
    for(String word : words) //For each word in words
    {
        if(word.contains(text)) // Check that word contains text
        {
            contentCheck.add(word);
        }
    }
    return contentCheck;
}
于 2013-10-24T15:57:47.303 に答える