2017-02-07 13 views
0

文字列配列の重複を削除しようとしていますが、 分割文字列を使用して配列内の文字列を取得し、カウンタメソッドを使用して重複を数えます。私が間違ったことを理解していないJavaの重複した文字列

public class Program { 
public static void uniqWords(String s){ 
    String[] sentence = s.split(" "); 
    int[] counter = new int[sentence.length]; 
    for(int i=0; i< sentence.length; i++){ 
    for(int j=i+1; j<sentence.length; j++){ 
     if(sentence[i] == sentence[j]){ 
      counter[i] =1; 
     } 
    } 
    }// 
    for(int i=0; i<counter.length; i++){ 
     System.out.print(counter[i] + ","); 
    } 
    for(int i =0; i<sentence.length; i++){ 
    if(counter[i] == 1){ 
     sentence[i] = ""; 
     } 
    } 
//print 
    for(int i=0; i<sentence.length; i++){ 
     System.out.print(sentence[i]); 
     System.out.print(" "); 
    } 
    // 

    } 


    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     uniqWords("Spring in in Paris"); 

    } 
} 
+0

あなたは本当に何も数えていません。あなたは何かを見つけるたびに「1」にカウンターを設定しています。また、あなたのプログラムをデバッグしてください。このような間違いを見つけ出すことは、デバッガの目的です。 Spoiler:文字列とjavaの '' == ''を比較しません。 – f1sh

+0

@KevinEsche - 配列をSetに変換したら、どのように文を再構成することを提案しますか?それは "重複を*文から削除する*"が伴いますので、 –

+0

@MarkAdelsbergerを 'String'配列に戻して変換しますか? – SomeJavaGuy

答えて

5

最も重要な問題は、あなたが動作しません==を使用して、二つの文字列の値を比較しようとしているということである:削除されますので、セットには、重複を許可していません。いずれかの文字列でequals()メソッドを使用して、他の文字列と比較する必要があります。

+0

また、最も一般的なjavaの間違いはstackoverflowに投稿 –

1

あなたの配列をセットに変換します。

String[] sentence = s.split(" "); 
    Set<String> set = new HashSet<String>(Arrays.asList(sentence)); 
+0

...どちらも、OPが何をしていないか、どちらの人が何をしたいと言っているかを示していません。 –

+3

OPから: "私の文字列配列の重複を取り除こうとしています"削除、コードの目的としてではありません – SCouto

+0

これは答えではありませんが、私は個人的にそれが有用であることを発見しました。私がそれを読むとすぐに、私は "あああ!" – toshiomagic

関連する問題