2016-11-11 8 views
0

У меня возникают трудности с моей домашней работой. У меня есть основная логика, но я запутался. Цель состоит в том, чтобы сделать квитанцию ​​из списка покупок, введенного пользователем. Например, пользователь вводит:Получение нескольких строк в массив

Apples 

OraNgeS // also it's not case sensitive 

Oranges 

Bananas 

!checkout //this is to indicate the list is over 

Выход:

Apples x1 

Oranges x2 

Bananas x1 

я застрял. Мой код до сих пор:

public static void main(String[] args) { 
    Scanner keyboard = new Scanner(System.in); 

    System.out.printf("Enter the items you wish to buy:"); 
    String[] input = new String [keyboard.nextLine()]; 
    keyboard.nextLine(); //consuming the <enter> from input above 

    for (int i = 0; i < input.length; i++) { 
     input[i] = keyboard.nextLine(); 
    } 

    System.out.printf("\nYour input:\n"); 
    for (String s : input) { 
     System.out.println(s); 
    } 
} 

Я знаю, что я должен добавить, если заявление в конце концов, так что если они введут в это будет конец списка «оформить заказ!». но я не могу пройти мимо этого еще.

Любые советы или рекомендации?

ответ

-1

Следующий код будет делать именно то, что вы ищете:

 Scanner keyboard = new Scanner(System.in); 
     List<String> inputItems = new ArrayList<String>();  
     List<String> printedResults = new ArrayList<String>(); 
     String input = keyboard.nextLine();  

     while(!"!checkout".equals(input)) 
     {   
      inputItems.add(input);   
      input = keyboard.nextLine(); 
     } 

     for(int i=0; i<inputItems.size();i++) 
     { 
      Integer thisItemCount = 0; 
      String currentItem = inputItems.get(i); 

      for(int j=0; j<inputItems.size();j++) 
      { 
       if(inputItems.get(j).toLowerCase().equals(currentItem.toLowerCase()))  
        thisItemCount++; 
      } 

      if(!printedResults.contains(currentItem.toLowerCase())) 
      { 
       System.out.println(currentItem.toLowerCase() + " x" + thisItemCount); 
       printedResults.add(currentItem.toLowerCase()); 
      }    
     } 
+0

Йо, спасибо! это было очень полезно, особенно в будущем! –

+0

Приветствия! Я рад, что это было полезно. Как и в других комментариях, полезно указать, на каком языке он находится. –

+0

Есть ли способ связаться с вами, чтобы помочь мне с другой проблемой? –

0

Попробуйте использовать ArrayList < - Ссылка.

Массив это необходимо статически инициализировать его первым, прежде чем вы можете использовать его, в то время как ArrayList автоматически расширяется при добавлении значения на нем. вы можете использовать ArrayList без инициализации диапазона. Вот пример:


List<String> fruitList = new ArrayList<>(); 
    Scanner keyboard = null; 
    Boolean isNotDone = true; 
    System.out.println("Press 'Q' if you want to print out."); 
    while(isNotDone) { 
     keyboard = new Scanner(System.in); 
     System.out.print("Input Fruits: "); 
     String temp = keyboard.nextLine(); 
     if(temp.equalsIgnoreCase("q")) { 
      isNotDone = false; 
     } else { 
      fruitList.add(temp); 
     } 
    } 
    System.out.println(fruitList); 
+0

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