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的记录,我想显示两条记录。有人可以指导我在上面的代码中修改我需要修改的内容吗?提前谢谢!
答案 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());