查找元素在Java中出现的次数

时间:2013-09-19 02:03:43

标签: java arrays assert

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以外的数字的测试时,它会失败,因为由于某种原因,无论如何,howMany IS 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"));        
}

我可以做些什么来解决这个问题?因为在我看来,我不知道甚至造成了什么。

编辑:哎呀。测试阵列版本的测试已被注释掉。实际运行的是链接版本,我还没有改变。很抱歉浪费时间。

1 个答案:

答案 0 :(得分:0)

您的代码的一个大问题是,您的退货归入了错误的位置。您应该注意到,如果您正确缩进代码。返回现在放在for循环中,这意味着,在检查第一个元素后,它返回amt。虽然它可能不会导致你描述的问题(总是返回0?),但这肯定是你需要处理的一个大问题。