2017-02-02 2 views
1

Grundsätzlich muss ich für das Wort einen Sequential Suche durch Liste der Elemente zur Durchführung entweder Kategorie oder Dietary und die Liste der Elemente Informationen im Format folgende Ausgabe:Ärger mit Sequential Search

Datenformat:

ID|Name|Description|Category|Dietary|Quantity|Unit Price 

Ausgang:

Please enter the number: 
1 to search category 
2 to search dietary 
3 to display all records 
4 to insert record 
5 to remove old records 
or enter '6' to quit. 

1 

Please enter the number: 
1 to search category 
2 to search dietary 
3 to display all records 
4 to insert record 
5 to remove old records 
or enter '6' to quit. 

rice 
1004|Premium Fragrant Rice|Large Size|Rice|Organic|2|9.5 

Please enter the number: 
1 to search category 
2 to search dietary 
3 to display all records 
4 to insert record 
5 to remove old records 
or enter '6' to quit. 

Aber mein Problem ist, wenn ich mein Programm laufen lasse, gebe ich 1 auf dem Benutzermenü ein, um nach Kategorie zu suchen, dann zeigt es nie die Liste der Einzelteilinformationen an. Aber ich bin nicht sicher, wie man den Code auf Linie 81 repariert?

Meine Leistung:

Please enter the number: 
    1 to search category 
    2 to search dietary 
    3 to display all records 
    4 to insert record 
    5 to remove old records 
    or enter '6' to quit. 

    1 

    Please enter the number: 
    1 to search category 
    2 to search dietary 
    3 to display all records 
    4 to insert record 
    5 to remove old records 
    or enter '6' to quit. 

    rice 

    Please enter the number: 
    1 to search category 
    2 to search dietary 
    3 to display all records 
    4 to insert record 
    5 to remove old records 
    or enter '6' to quit. 

Java:

String INPUT_PROMPT = "\nPlease enter the number:\n" + 
       "1 to search category" 
       + "\n2 to search dietary" + "\n3 to display all records" + "\n4 to insert record" + "\n5 to remove old records " + "\nor enter '6' to quit." +"\n"; 
     System.out.println(INPUT_PROMPT); 

     try 
     {   
      BufferedReader reader = new BufferedReader 
        (new InputStreamReader (System.in)); 
      line = reader.readLine(); 


      while(!line.equals("6")) 
      {  
       switch(line) 
       { 
        //Search word for Category 
        case "1": <-----Line 81 
        int i=0; 
        while(i<prdct.size()) 
        { 
         if(prdct.get(i).category.contains(line)) 
         { 
          System.out.println(prdct.get(i)); 
         } 
         i++; 
        } 
        if(i == 0) 
        { 
         System.out.println("Record not found"); 
        } 
        break; 

        case "3": 
        for(int h=0; h<prdct.size(); h++) 
        { 
         System.out.println(prdct.get(h)); 
        } 
        break; 
       } 

       System.out.println(INPUT_PROMPT); 
       line = reader.readLine(); 

      } 

     } 
     catch(Exception e){ 
      System.out.println("Input Error!"); 
     } 

Antwort

0

Blick auf den Code unten, Zeile für Zeile:

line = reader.readLine(); 

Sie zuerst eine Zeile lesen.

while(!line.equals("6")) 
{  
    switch(line) 
    { 
     //Search word for Category 
     case "1": 

Dann überprüfen Sie die Zeile, die Sie lesen, um zu sehen, ob der Benutzer "1" eingegeben hat.

 int i=0; 
     while(i<prdct.size()) 
     { 
      if(prdct.get(i).category.contains(line)) 

Dann suchen Sie die Liste nach der Zeile, die der Benutzer eingegeben hat.

Sie nehmen nie neue Benutzereingaben! Anstatt nach der vom Benutzer gewünschten Kategorie zu suchen, suchen Sie immer noch nach der Zeichenfolge "1". Nehmen Sie Benutzereingaben erneut vor, um dieses Problem zu beheben. Fügen Sie einfach einen weiteren reader.readLine() hinzu, bevor Sie die Liste durchsuchen:

 line = reader.readLine(); 
     int i=0; 
     while(i<prdct.size()) 
     { 
      if(prdct.get(i).category.contains(line))