0
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;

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

4

3 回答 3

2

为此,您需要遍历整个列表。您需要从循环break;内部删除该语句。for有了这个break语句,只要有给定的匹配student name项,它就会打破 for 循环。它没有搜索列表的其余部分。

于 2013-09-13T07:08:28.907 回答
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;
于 2013-09-13T07:40:36.720 回答
0
      StringBuilder result = new StringBuilder();
       for(Student stu : studentInfo)
       {        
         if(stu.getName().equalsIgnoreCase(searchName))
             result = result.append(stu.getName()+ " ");  
        }
       System.out.println(result.toString());
于 2013-09-13T07:09:40.970 回答