在列表中搜索名称并显示所有匹配项

时间:2013-09-13 07:01:14

标签: java collections

case 4: if(studentInfo.isEmpty())
        {
            System.out.println("No student record exists!");
        }
        else
        {
            System.out.println("Enter the name of the student you want to search for: ")
                    searchName = sc2.next();

                    for(Student stu : studentInfo)
                    {
                       if(stu.getName().equalsIgnoreCase(searchName))
                        {
                           System.out.println("Match found: "+stu);

                        }
                        else 
                        {
                            System.out.println("No match found for the given name!");
                        }
                        break;
                     }
        }
        break;

这是我的案例块,其中我从用户那里获取一个String,这将是一个名称,并搜索List是否包含该名称(最初的记录是在以前的case块中添加的)。我想显示与用户给出的名称相匹配的所有名称。 例如:如果列表中有两条名为John的记录,我想显示两条记录。有人可以指导我在上面的代码中修改我需要修改的内容吗?提前谢谢!

3 个答案:

答案 0 :(得分:2)

为此,您需要遍历整个列表。您需要从break;循环中删除for语句。使用此break语句,只要给定student name匹配,就会中断for循环。它没有搜索列表的其余部分。

答案 1 :(得分:1)

你应该为每个循环删除else语句,不需要break语句。

这是代码:

case 4: if(studentInfo.isEmpty())
        {
            System.out.println("No student record exists!");
        }
        else
        {
            System.out.println("Enter the name of the student you want to search for: ")
                    searchName = sc2.next();
                    int i = 0;

                    for(Student stu : studentInfo)
                    {
                       if(stu.getName().equalsIgnoreCase(searchName))
                        {
                           System.out.println("Match found: "+stu);
                           i++;

                        }
                     }
                     if(i == 0)
                         System.out.println("No Match found");
        }
        break;

答案 2 :(得分:0)

      StringBuilder result = new StringBuilder();
       for(Student stu : studentInfo)
       {        
         if(stu.getName().equalsIgnoreCase(searchName))
             result = result.append(stu.getName()+ " ");  
        }
       System.out.println(result.toString());