【问题标题】:Trouble with Sequential Search顺序搜索的问题
【发布时间】:2017-02-02 07:27:33
【问题描述】:

基本上,我需要通过 CategoryDietary 词的项目列表执行 Sequential Search 并生成项目信息列表输出格式如下:

数据格式:

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

【问题讨论】:

    标签: java search sequential


    【解决方案1】:

    逐行看下面的代码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多