2014-09-10 54 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

相關問題