2013-10-06 4 views
0

Хорошо, я огромный новичок в мире java, и, похоже, я не могу получить эту программу правильно. Я предполагаю удалить дублированные символы в 2-строчной строке и напечатать не дублированные символы. Например, : Я вводил слова «компьютерная программа». вывод должен быть «милым», потому что это единственный символ, который не повторяется.Как удалить повторяющиеся символы в строке?

Я сделал это до тех пор здесь:

public static void main(String[] args) { 
    System.out.print("Input two words: "); 
    String str1 = Keyboard.readString(); 
    String words[] = str1.split(" "); 
    String str2 = words[0] + " "; 
    String str3 = words[words.length - 1] ; 
} 

, но я не знаю, как выводить символы. Может кто-нибудь мне помочь? Я не знаю, следует ли мне использовать, если, переключиться, сделать, сделать или сделать-в то время как ...... Я смущен.

+0

Не должно ли выход быть «милым га»? – arshajii

+0

Изучите использование ['LinkedHashMap'] (http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html). Сопоставьте символ с их количеством с одним проходом строки. Затем перебираем записи карты и добавляем символы частоты 1 в некоторый буфер (т. Е. 'StringBuilder'). Наконец, напечатайте результат. – arshajii

ответ

0

что вам нужно, чтобы создать логику для вашей проблемы. Сначала нарушите утверждение проблемы и приступите к поиску решения для этого. Здесь вы делаете шаги,

  1. Прочитайте каждый символ из строки.
  2. Добавьте его в коллекцию, но перед добавлением этого просто проверьте, существует ли она.
  3. Если он существует, просто удалите его и продолжите чтение символа.
  4. Как только вы закончите чтение символов, просто распечатайте содержимое коллекции на консоль, используя System.out.println.

Я порекомендую вам обратиться к книгам типа «Подумайте, как программист». Это поможет вам начать работу с построением логики.

+0

Это очень помогло мне. спасибо –

+0

Можете ли вы выбрать подходящее сообщение и пометить его как ответ. – CuriousMind

0

Добавление следующего кода после последней строки вашей основной программы разрешит вашу проблему.

char[] strChars = str2.toCharArray(); 
    String newStr=""; 
    for (char c : strChars) { 
     String charStr = ""+c; 
     if(!str3.contains(charStr.toLowerCase()) && !str3.contains(charStr.toUpperCase())){ 
      newStr+=c; 
     } 
    } 

    System.out.println(newStr); 

Этот код перебирает все символы первого слова и проверить, если вторая строка содержит этот символ (в любой форме корпуса нижней или верхней). Если он не содержит, добавив его в строку вывода и в конце печати.

Надеюсь, что это сработает в вашем случае.

+0

спасибо. Я исправлял программу, когда увидел результат. У меня возникла проблема с выражением if. Это завершило программу. очень большой. –

0

Как насчет того, чтобы сделать это всего в 1 строке?

str = str.replaceAll("(.)(?=.*\\1)", ""); 
Смежные вопросы