我尝试过以下代码,但是没有用,我该怎么做?
for(int i=0;i<Name.length;i++){
for(int j=i+1; j<Name.length;j++){
if(Name[i].equals(Name[j]))
{
count++;
person[i]=Name[i];
}
}
}
System.out.println("Repeated Names:");
for(int i=0; i<Name.length;i++){
System.out.println(person[i]);
}
System.out.println("Count Of Repeated Names: "+count);
}
}
答案 0 :(得分:2)
在if语句中,您将姓名[i]分配给person [i],&#39; i&#39;将在循环中递增,而不是仅在向person []添加某些内容时递增。相反,使用count变量(确保在任何循环之前将count设置为0):
if(Name[i].equals(Name[j]))
{
boolean found=false;
for (String s: person) {
if(Name[j].equals(s)) {
found = true;
}
}
if(!found) {
person[count] = Name[i];
count++;
}
}
另外,请注意if语句中添加的for循环。如果您没有检查并且已经找到了名称,则可以多次添加相同的副本,并且可以获得越界异常。所以如果你的名字数组是:
{&#34;约翰&#34;&#34;约翰&#34;&#34;约翰&#34;}
你的循环将在第一次迭代时添加第二个和第三个John,在第二次迭代时再次添加第三个John。
最后要打印person数组而不打印空值或垃圾,你可以再次使用你的count变量:
for(int i=0; i<count;i++){
System.out.println(person[i]);
}