计算某个字母的数字会出现在ArrayList

时间:2016-03-12 00:46:38

标签: java string arraylist intellij-idea char

我有一个ArrayList,以“做菜”的形式存储笔记(字符串)。我有一个注释类,其中包含一个方法,该方法应该遍历ArrayList中的所有注释,并计算某个字母出现的次数。这是我到目前为止所写的方法:

public int countNumberOf(String letter) {
        int count = 0;
        for (int i = 0; i < notes.size(); i++) {
            String note = (notes.get(i));
            for (int j = 0; i < note.length(); i++) {
                String letterTemp = note.substring(i, i);
                if (letterTemp.equalsIgnoreCase(letter)) {
                    count++;
                }
            }

        }
        return count;
    }

但是,当我运行程序时,即使我知道它存在于ArrayList中,我也会看到字母“a”出现的次数为零。我做错了什么?

4 个答案:

答案 0 :(得分:2)

Box将始终返回空字符串,因此note.substring(i, i)将始终返回letterTemp.equalsIgnoreCase(letter)。您应该使用false

虽然我建议您使用note.substring(i, i+letter.length())进行比较,但在此类任务中。主要是为了简单起见,并避免不必要的中间字符串。逻辑是相同的

答案 1 :(得分:1)

你的第二个for-loop似乎不正确。

float: left;

注意那些索引变量display: inline-block;for (int i = 0; i < notes.size(); i++) { String note = (notes.get(i)); for (int j = 0; i < note.length(); i++) {

答案 2 :(得分:1)

您可以随时访问和比较字符,而不是将String传递给方法并执行substring,例如:

public int countNumberOf(char letter) {
...
String letterTemp = note.charAt(i);
if (letter == letterTemp) {
        count++;
}

另一个例子:

public static int countOccurrences(String text, char character) {
    int count = 0;
    for (int i = 0; i < text.length(); i++) {
        if (text.charAt(i) == character) {
            count++;
        }
    }
    return count;
}

答案 3 :(得分:0)

怎么样:

int countOfLetter = note.length() - (note.replace(letter,"")).length();