2017-01-06 5 views
0

Я хотел бы иметь два выхода, поскольку, как будто я набираю «ora», мне бы хотелось, чтобы он выводил «оранжевый» и «апельсиновый сок» в двух строках, но как бы вы это сделали?обработка/Java: два выхода от одного arraylist

class searcher { 
     ArrayList<String> toBecompared= new ArrayList<String>(Arrays.asList("orange", "orange juice", "apples", "cola", "soda")); 
     void search() { 
     String[] words = {text}; 
     // text is a user input 
     // for loop test for if the "list" contains "text" (user input) 
     for (int i = 0; i < toBecompared.size(); i++) { 
      for (int w = 0; w < text.length(); w++) { 
      try { 
       if (toBecompared.get(i).contains(words[w])) { 
       println(words[w] +" " + toBecompared.get(i)); 
       } 
      } 
      catch(Exception a) { 
      } 
      } 
     } 
     } 
    } 
+0

Добро пожаловать на переполнение стека! Сначала вы можете взять [тур] и узнать [спросить] хороший вопрос и создать [mcve]. Это облегчает нам помощь. – Katie

ответ

0

я нашел способ сделать это, но им не уверен, что это лучший способ: P

class searcher { 
    ArrayList<String> toBecompared= new ArrayList<String>(Arrays.asList("orange", "orange_juice", "apples", "cola", "soda")); 
    String comparing ="orange orange_juice apples cola soda"; 
    String[] splited = comparing.split("\\s+"); 
    String compared1; 
    String compared2; 

    boolean True = false; 

    void search() { 
    String[] words = {text}; // text is a user input 
    for (int i = 0; i < toBecompared.size(); i++) { 
     for (int w = 0; w < text.length(); w++) { 
     try { 
      if (toBecompared.get(i).contains(words[w])) { 
      //println(words[w] +" " + toBecompared.get(i)); 

      if (True == true) { 
       compared2 = splited[i]; 
       True = false; 
      } else { 
       compared1 = splited[i]; 
       True = true; 
      } 
      } 
      println(compared1); 
      println(" "); 
      println(compared2); 
     } 

     catch(Exception a) { 
     } 
     } 
    } 
    } 
} 
+0

Я бы предложил создать «Список », перейдя через ваши входы, если он соответствует, затем добавьте его в список. В конце цикла вы можете сделать то, что хотите, со списком. Если вы хотите только 2 вещи, напечатайте только первые два (проверьте, что у вас есть как минимум 2, конечно). Кроме того, 'boolean True = false;' заставляет мой мозг болеть :-) – Stik

+0

@ Lampen похоже, что вы пытаетесь реализовать автоматическую полную функциональность. Если это так, вы должны изучить [расстояние Левенштейна] (https://en.wikipedia.org/wiki/Levenshtein_distance) –

+0

Для любви к Reas никогда не используйте пустой блок исключений. По крайней мере, позвоните в 'a.printStackTrace()' там. –