2017-02-07 3 views
0

Я пытаюсь удалить дубликаты в моем массиве строк, хотя он не работает, Я использую Split String, чтобы получить мою строку в массиве, а затем использовать метод счетчика для подсчета дубликатов. Я не понимаю, что я сделал неправильноДубликат String Array в 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

Вы на самом деле ничего не считаете. Вы устанавливаете счетчик '' '' каждый раз, когда вы что-то находите. Также: отлаживайте свою программу. Поиск ошибок, таких как это то, что для отладчика. Spoiler: вы не сравниваете строки с '' == '' в java. – f1sh

+0

@KevinEsche - И, преобразив массив в набор, как вы предлагаете восстановить предложение? Так как это приведет к «удалению дубликатов * из предложения»? –

+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

Смежные вопросы