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(“找不到名称”);
。希望这对您有所帮助。