2017-02-02 14 views
1

基本的に私は、単語のいずれかカテゴリーまたは食生活のための項目のリストをシーケンシャル検索を実行し、次の出力フォーマットの項目情報のリストを生成する必要があります。トラブル

データ形式:

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

出力:

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. 

私のプログラムを実行すると、ユーザーメニューの1を入力してカテゴリを検索しても項目情報のリストは表示されません。しかし、81行目でコードを修正する方法がわかりません。

マイ出力:

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

答えて

0

は、以下のコードを見て、ラインごと:

line = reader.readLine(); 

あなたが最初の行を読んで。

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

次に、読み取った行をチェックして、ユーザーが「1」を入力したかどうかを確認します。

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

次に、ユーザーが入力した行のリストを検索します。

あなたは新しいユーザー入力をしません!そのため、ユーザーが望むカテゴリを検索する代わりに、文字列 "1"を検索しています。この問題を解決するには、もう一度ユーザー入力を行います。リストを検索する前に別のreader.readLine()を追加すると、次のようになります。

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