我有一个字符串数组,它是未排序的,它有重复的元素。我想计算不同的元素,但是当我调用我的方法时,它会返回所有元素的数量,而不仅仅是不同的元素。有什么想法吗?
public static double countDistinctString(String[] array) {
double distinctStrings = 0;
for (int j = 0; j < array.length; j++){
String thisString = array[j];
boolean seenThisStringBefore = false;
for (int i = 0; i < j; i++){
if (thisString == array[i]){
seenThisStringBefore = true;
}
}
if (!seenThisStringBefore){
distinctStrings++;
}
}
return distinctStrings;
}
}
答案 0 :(得分:0)
问题是您使用==
来比较字符串;请参阅How do I compare strings in Java?了解为何这不起作用。请改用if (thisString.equals(array[i]))
。
答案 1 :(得分:0)
这应该有效(我还改进了一点 - 使用int而不是double,使用break一旦找到匹配):
public static double countDistinctString(String[] array) {
int distinctStrings = 0;
for (int j = 0; j < array.length; j++) {
String currentString = array[j];
boolean seenThisStringBefore = false;
for (int i = 0; i < j; i++){
if (currentString.equals(array[i])) {
seenThisStringBefore = true;
break;
}
}
if (!seenThisStringBefore) {
distinctStrings++;
}
}
return distinctStrings;
}