我想在java中比较字符串类型数组中的字符串

时间:2016-03-06 02:17:28

标签: java

我尝试过以下代码,但是没有用,我该怎么做?

 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);
 }
 }

1 个答案:

答案 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]);
}