计算某个字母的数字会出现在ArrayList中的一系列字符串中
我有一个ArrayList,以“做菜”的forms存储笔记(字符串)。 我有一个注释类,其中包含一个方法,该方法应该遍历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”出现的次数为零。 我究竟做错了什么?
您可以随时访问和比较字符,而不是将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; }
note.substring(i, i)
将始终返回一个空字符串,因此letterTemp.equalsIgnoreCase(letter)
将始终返回false
。 你应该使用note.substring(i, i+letter.length())
虽然我建议您使用char
进行比较,但是在这种任务中。 主要是为了简单起见,并避免不必要的中间字符串。 逻辑是一样的
你的第二个for循环似乎不正确。
for (int i = 0; i < notes.size(); i++) { String note = (notes.get(i)); for (int j = 0; i < note.length(); i++) {
注意那些索引变量i
和j
。
怎么样:
int countOfLetter = note.length() - (note.replace(letter,"")).length();