0
public int howMany(String element) {
    int amt = 0;
    for (int i = 0; i < log.length; i++) {
        if (element.equalsIgnoreCase(log[i]))
            amt = amt+1;
        }
    return amt;
    }
}

それが私が現在持っているコードです。提供された要素を取得し、amt の形式で出現回数をカウントするループを通過します。しかし、実際に 0 以外の数値を期待するテストの 1 つを実行すると、何らかの理由で howMany によって与えられた数値が何であっても 0 であるため、失敗します。最初に amt を 5 に変更しても、次のようなテストを実行すると、まだ 0 です。

public void test_1_match_at_beginning() {   
    strLog.insert("string 1"); strLog.insert("string 2");
    strLog.insert("string 3"); strLog.insert("string 4");
    strLog.insert("string 5"); 

    assertEquals(1, strLog.howMany("string 1"));        
}

これを修正するために何ができますか? 私が見ているように、何が原因なのかわからないからです。

編集:おっと。テストの配列バージョンのテストはコメントアウトされました。実際に実行していたのはリンクされたバージョンで、まだ変更していませんでした。時間の無駄で申し訳ありません。

4

1 に答える 1

0

コードの大きな問題の 1 つは、戻り値が間違った場所に配置されることです。コードを適切にインデントすると、注意する必要があります。Return は for ループに入れられるようになりました。つまり、最初の要素をチェックした後、amt. あなたが説明した問題を引き起こさないかもしれませんが (常に 0 を返しますか?)、これは確かに対処する必要がある大きな問題です。

于 2013-09-19T02:34:56.543 に答える