2016-11-10 7 views
1

Я попросил написать программу, которая находит общие символы в двух строках, используя IndexOf (символы) метода и цикла. Вот то, что у меня есть до сих пор - выход выходит еще пустым.Java: найти общие символы в двух строках

import java.util.Scanner; 
public class ClassName { 
    public static void main (String args []) { 

    Scanner input = new Scanner (System.in); 

    String a = ""; 
    String b = ""; 
    String c = ""; 

    System.out.print("Enter two words: ") 
    a = input.nextLine(); 
    b = input.nextLine(); 

    for (int i = 0; i < a; i++){ 

     char ch = a.charAt(i); 
     if (b.indexOf(ch) != -1){ 
     c = c+String.valueOf(ch); 
     } 
     } 
System.out.print("Common letters are: "+c); 
} 

}

output here

Я не уверен, куда идти отсюда.

благодаря

+1

Лиам, вы должны разместить весь код, чтобы мы могли видеть, как вы печатаете из текста. Лучшей практикой здесь является публикация ВСЕГО вашего соответствующего кода. – BlackHatSamurai

+0

Да, поместите весь свой код. Я попытался выполнить ваш вышеуказанный фрагмент кода в онлайн-среде Java IDE, и он работал отлично. Я инициализировал a и b для «таблицы» и «кабеля» соответственно. Я получил «способный» печатать для c. Если он не работает для вас, возможно, что-то не так в том, как вы инициализируете a и b. – VHS

+0

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

ответ

1

Ваш код будет дублировать общие символы, например, если сравнить «developper» к «программист» ваш результат строка будет содержать три раза е символов

Если Вы не делаете хочу такое поведение я полагаю, что вы также можете использовать набор так:

public class CommonCharsFinder { 

    static String findCommonChars(String a, String b) { 
     StringBuilder resultBuilder = new StringBuilder(); 
     Set<Character> charsMap = new HashSet<Character>(); 
     for (int i = 0; i < a.length(); i++) { 
      char ch = a.charAt(i); //a and b are the two words given by the user 
      if (b.indexOf(ch) != -1){ 
       charsMap.add(Character.valueOf(ch)); 
      } 
     } 

     Iterator<Character> charsIterator = charsMap.iterator(); 
     while(charsIterator.hasNext()) { 
      resultBuilder.append(charsIterator.next().charValue()); 
     } 
     return resultBuilder.toString(); 
    } 
    // An illustration here 
    public static void main(String[] args) { 
     String s1 = "developper"; 
     String s2 = "programmer"; 

     String commons = findCommonChars(s1, s2); 
     System.out.println(commons);  
    } 

} 

Результат из примера:

enter image description here

+0

Извините за путаницу, все еще учась использовать этот сайт (и как явно код). И да @alainlompo - это еще одно требование вопроса - похоже, это работает. благодаря! – benny

+0

@benny приветствую вас, продолжайте приходить на переполнение стека, это отличное место для изучения и обмена :) – alainlompo

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