顺序搜索的麻烦

时间:2017-02-02 07:27:33

标签: java search sequential

基本上我需要通过 Category Dietary 这个词的项目列表执行顺序搜索,并生成项目列表信息以下列输出格式:

数据格式:

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.

爪哇:

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

1 个答案:

答案 0 :(得分:0)

逐行查看下面的代码:

line = reader.readLine();

你先读了一行。

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

然后检查您阅读的行以查看用户是否输入了&#34; 1&#34;。

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

然后在列表中搜索用户输入的行。

您永远不会接受新用户输入!因此,您不是在搜索用户想要的类别,而是在搜索字符串&#34; 1&#34;。再次接受用户输入以解决此问题。只需在搜索列表之前添加另一个reader.readLine(),如下所示:

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