我有一个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”出现的次数为零。我做错了什么?
答案 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();