我编写了一个程序,其中我有N个字符串,Q查询也是字符串。目标是确定每个查询在N个字符串中出现的次数。
这是我的代码:
ifelse
当我运行我的代码并输入4个字符串,如{abc,abc,abc,def}和3个查询,如{abc,def,ghi}时,我希望输出为3,1和0,因为有3“abc”,1“def”和0“ghi”。但是,所有查询的输出都为零。
我很确定问题来自该方法 int countStringOccurance(ArrayList arr,String str),它应该给出字符串ArrayList中重复字符串的次数。
我在这里遗漏了什么?
答案 0 :(得分:5)
使用String.equals()
来比较字符串,而不是==
。而不是:
if (str1==str2) // WRONG!!!
写
if (str1.equals(str2)) // Correct
答案 1 :(得分:2)
// count the number of occurances of a string in an array
int countStringOccurance(ArrayList<String> arr, String str){
int count = 0;
for (int i=0; i<arr.size(); i++) {
if (str.equals(arr.get(i))) { //<-- change your condition to this
count += 1;
}
}
return count;
}
答案 2 :(得分:0)
在两个对象之间使用==
,而不是System.out.println()
。然后,当您遇到错误时,尝试在敏感部分中放置一些日志跟踪,例如,使用简单的{{1}},以检查每个对象和变量是否填充良好。可以帮你解决这类问题!
答案 3 :(得分:0)
已经有一个处理此问题的内置方法,Collections#frequency
:
int occurrences = Collections.frequency(list, "String here");