2014-09-10 34 views
0

对不起,这个问题问的我又曾在forum.But发现很多作为与说明的代码对Java时除外我想在我的方式,但它不能正常工作。我试过没有任何默认方法的代码必须对这一计划字符串数组包含重复的值,并删除和打印阵列

工作代码:

package javatest; 

public class Test03sep { 

    public static void main(String args[]) 
    { 
         //0 1   2 3 
     String []val={"amma","senthil","kumar","amma"}; 
     removeduplicate(val); 
    } 
    static void removeduplicate(final String []arr) 
    { 

     String temp=""; 
      for (int i = 0; i < arr.length; i++) 
      { 
      for (int j = i+1; j < arr.length; j++) 
      { 
       System.out.print("condition are:"); 
       System.out.println(arr[i]==arr[j]); 

       if(arr[i]==arr[j]) 
        { 
        temp=arr[i]; 
        arr[i]=arr[j]; 
        arr[j]=temp; 

        } 

     } 
      for (String string : arr) { 
       System.out.println("string array are==>"+string); 
      } 
} 
    } 
} 

输出:

condition are:false 
condition are:false 
condition are:true 
string array are==>amma 
string array are==>senthil 
string array are==>kumar 
string array are==>amma 
condition are:false 
condition are:false 
string array are==>amma 
string array are==>senthil 
string array are==>kumar 
string array are==>amma 
condition are:false 
string array are==>amma 
string array are==>senthil 
string array are==>kumar 
string array are==>amma 
string array are==>amma 
string array are==>senthil 
string array are==>kumar 
string array are==>amma 

但我除外输出是String array are===>{"amma","senthil","kumar"};

可能有些人可以在本指南中,请????

+0

'for(String string:arr){ System.out.println(“string array == ==”+ string); }' 如果您使用IDE,请尝试调试此代码并查看执行上述代码时会发生什么。 – prabugp 2014-09-10 13:29:07

+0

只是FYI,如果你想专门处理没有重复的项目,你可以看看java'Set'类。 – vikingsteve 2014-09-10 13:33:34

+0

@vikingsteve @vikingsteve我的目标在这里实现,而不使用默认的方法,如等于,包含,设置,treeset ...等...如何避免和超过我的解决方案 – user3607180 2014-09-10 13:41:41

回答

0

请更改if(arr[i]==arr[j])if(arr[i].equals(arr[j]))

虽然比较字符串对象,你应该使用equals()方法,而不是"=="

+0

不,我想没有默认的方法,在IDE中可用.so没有Equals我怎样才能比较java中的值 – user3607180 2014-09-10 13:36:20

+0

将它转换为'char []'并比较每个字符?奇怪的设计选择做它没有'.equals()' – 2014-09-10 13:41:17

0

这是不正确的,因为这是做一个内存比较:

    if(arr[i]==arr[j]) 
       { 
        temp=arr[i]; 
        arr[i]=arr[j]; 
        arr[j]=temp; 
       } 

更改它太这段代码做值比较:

    if(arr[i].equals(arr[j])) 
       { 
        temp=arr[i]; 
        arr[i]=arr[j]; 
        arr[j]=temp; 

       } 
0

如果(ARR [I] == ARR [j]的)替换到如果(ARR [I] .equals(ARR [j])),因为==对象的匹配散列码而equals()方法在字符串overrided和它通过字符匹配字符串char所以使用equals()方法而不是==运算符

+0

我的目标在这里实现,而不使用默认的方法,如等于,包含...如何避免和超过我的解决方案 – user3607180 2014-09-10 13:39:50

+0

你可以使用字符串getChars()方法将每个字符与另一个字符串匹配 – 2014-09-10 13:57:07

相关问题