2013-02-18 3 views
1

Я пытаюсь удалить дубликаты из ввода. Существует множество способов сделать это, используя ArrayList, LinkedList, Hash set и т. Д. Я знаю, как это сделать, если ввод указан как «{apple», «ball», «apple», «cat»} в проблеме. Но я хочу использовать класс сканера и получить ввод, который говорит строку, и вы хотите удалить дубликаты в символе или удалить повторяющиеся слова. У вас есть простой способ сделать это. Я включил свой рабочий код для более раннего сценария.Удаление повторяющихся слов или символов с помощью ввода от пользователя

public static void main(String[] args) { 
     // TODO code application logic here 

     Scanner scan= new Scanner(System.in); 
     String[] str= {"a", "b", "c", "a"}; 
     System.out.println("enter text"); 
     List<String> l= 
       Arrays.asList(str); 
     System.out.println(l); 
     Set<String> set= new HashSet<String>(l); 
     System.out.println(set); 
    } 
+0

Там * должен * быть простым способом .. изучить АВБ Java структур данных – Coffee

+2

что означает «АВБ» означает? -novice – user2085145

+0

- доступно. ya i knoooooow – Coffee

ответ

1

Далее будет читать каждое слово и добавить его в HashSet (который удаляет Dups автоматически, что вы выяснял) и остановится, когда слово! и распечатать набор ..

Scanner scan= new Scanner(System.in); 
    HashSet<String> set = new HashSet<String>(); 
    String s; 
    while (!(s = scan.next()).equals("!")) { 
     set.add(s); 
    } 
    System.out.println(set); 
+0

спасибо, это помогает. – user2085145

+0

Некоторые, как я не могу получить это, чтобы напечатать набор. Я даже попробовал «scan.hasNext()». Также используется для каждого цикла. Что я делаю не так? – user2085145

+0

hasNext() может быть блокирующим - то есть он будет ждать, пока он будет иметь вход, а затем вернет true, чтобы вы не покинули цикл. Вам нужно как-то сломать цикл, например, когда вы вводите слово, которое его разрывает. – ddmps

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