Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在列表中搜索名称并显示所有匹配项_Java_Collections - Fatal编程技术网

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

Java 在列表中搜索名称并显示所有匹配项,java,collections,Java,Collections,这是我的案例块,其中我从用户处获取一个字符串,该字符串将是一个名称,并搜索列表是否包含该名称(最初的记录添加到以前的案例块中)。我想显示所有与用户给定名称匹配的名称。 例如:如果列表中有两条名为John的记录,我希望同时显示这两条记录。有人能指导我在上面的代码中修改什么吗?提前谢谢 为此,您需要遍历整个列表。您需要删除中断

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

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

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

您应该从for-each循环中删除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();

                    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;
以下是代码:

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

您应该从for每个循环中删除else语句,而不需要break语句

以下是代码:

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

移除裂缝;在回路中,移除断路器;在for循环中,我把
break
语句放错了位置!它应该放在
else
块中的
println
语句之后。我的错!实际上,您不需要在
for
循环中使用
break
语句。在循环的
之前声明一个
布尔
变量:
boolean nameFound=false
。现在在
if块中
将布尔值设置为true:
nameFound=true
(这意味着它找到了一个匹配的名称),并让
for
循环迭代到列表中的最后一个元素。在
for
循环之后,检查
nameFound
变量的值。如果仍然
false
,则打印
No match found
如果(!nameFound){syso(“未找到名称”)
。希望这能帮助你。我把
break
语句放错地方了!它应该放在
else
块中
println
语句之后。我的错!实际上你不需要在
for
循环中使用
break
语句。在
之前声明一个
布尔
变量>对于
循环:
boolean nameFound=false
。现在在
if块中
将布尔值设置为true:
nameFound=true;
(这意味着它已找到匹配的名称)然后让
for
循环迭代到列表中的最后一个元素。在
for
循环之后,检查
nameFound
变量的值。如果它仍然是
false
,则打印
No match found
如果(!nameFound){syso(“找不到名称”);
。希望这对您有所帮助。