我有一个String数组,我想看看此数组中有多少个不同的字符串。表示有多少个字符串,不计算重复的字符串。这是我所拥有的:
int strings = 0;
int arrayLength = x.length;
for (int currentNum = 1; currentNum < arrayLength; currentNum++) {
for (int i = currentNum + 1; i < arrayLength; i++) {
if (x[currentNum].equals(x[i])) {
break;
} else {
strings++;
}
}
return strings;
}
但这永远不会返回正确的金额,有人可以告诉我为什么吗?
更新:
出于好奇,如果我还想检查该字符串是否向后等于其他字符串,该怎么办?然后,HashSets将不起作用。
最佳答案
您的代码有2个问题。首先,数组索引从0
而不是1
开始。其次,当您想跳过该行时,break
带您进入strings++
行。相反,您想continue
外循环,以便不执行strings++
行。令人讨厌的是,您不能单独使用continue
,因为这适用于内部循环。您可以使用标签,如下所示:
loop:
for (int currentNum = 0; currentNum < arrayLength; currentNum++) {
for (int i = currentNum + 1; i < arrayLength; i++) {
if (x[currentNum].equals(x[i])) {
continue loop;
}
}
strings++;
}