2016-11-11 2 views
0

Ich habe Schwierigkeiten mit meinen Hausaufgaben. Ich habe die grundlegende Logik, aber ich vermassle. Ziel ist es, eine Quittung aus einer Einkaufsliste zu erstellen, die vom Benutzer eingegeben wird. Zum Beispiel gibt der Benutzer:Mehrere Strings in ein Array bekommen

Apples 

OraNgeS // also it's not case sensitive 

Oranges 

Bananas 

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

Ausgang:

Apples x1 

Oranges x2 

Bananas x1 

Ich bin fest. Mein Code so weit:

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); 
    } 
} 

Ich weiß, ich werde die if-Anweisung hinzufügen, um schließlich so, wenn sie geben, es wird die Liste am Ende „Kasse“. aber ich komme noch nicht darüber hinweg.

Irgendwelche Tipps oder Ratschläge?

Antwort

-1

Der folgende Code wird genau das tun, was Sie suchen:

 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

Yo vielen Dank! Dies war sehr hilfreich, vor allem für zukünftige Referenz! –

+0

Prost! Ich bin froh, dass es nützlich war. Wie im anderen Kommentar erwähnt, ist es gut zu spezifizieren, welche Sprache es ist. –

+0

Gibt es irgendeine Möglichkeit, wie ich Sie kontaktieren kann, um mir bei einem anderen Problem zu helfen? –

0

Versuchen Sie zu verwenden ArrayList < - Link.

Array ist muss es statisch zuerst initialisieren, bevor Sie es verwenden können, während Arraylist automatisch erweitert wird, wenn Sie Werte hinzufügen. Sie können ArrayList verwenden, ohne einen Bereich dafür zu initialisieren. Hier ist die Probe:


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

Dies ist ein guter Start, aber ich würde es braucht aus dem zum Drucken Fruchtliste Zeile für Zeile (so wie sie eingegeben wurde). Auch die Menge müsste in der Ausgabe wie Orangen x1 angezeigt werden, ich arbeite gerade daran, diesen Code zu ändern, um zu sehen, wie ich diese Funktion hinzufügen kann. Lass es mich wissen, wenn du herausfindest, wie andere weise dir danken !! –