gpt4 book ai didi

java - 在数组中查找值?

转载 作者:行者123 更新时间:2023-12-01 23:01:58 25 4
gpt4 key购买 nike

我正在尝试搜索数组中的值。但结果却总是一无所获。我假设我的循环不正确,你能帮我解决我做错的事情吗?它应该使用“searchFor”中保存的值并进行匹配。然后在 Printer.printPersonList 中显示该值。

    public static ArrayList<Person> findPerson(String searchFor) {
ArrayList<Person> matches = new ArrayList<>();
for (Person p : personList) {
boolean isAMatch = false;

if (p.getFirstName().equalsIgnoreCase(searchFor)) {
isAMatch = true;

} else if (p.getLastName().equalsIgnoreCase(searchFor)) {
isAMatch = true;

} else if (p.getSocialSecurityNumber().contains(searchFor)) {
isAMatch = true;
;
} else if (String.format("%d", p.getAge()).equals(searchFor))
if (isAMatch) {

matches.add(p);
}

Printer.printPersonList(matches);

}
return matches;

}
<小时/>

这是来自 Printer.java

public static void printPersonList(ArrayList<Person> personListToPrint) {

System.out
.printf("\nLast Name First Name Social Security Number Age\n");
System.out
.printf("=================== =================== ====================== ===\n");
for (Person p : personListToPrint) {

System.out.printf("%-20s%-21s%-24s%s\n", p.getLastName(),
p.getLastName(), p.getSocialSecurityNumber(), p.getAge());

}

最佳答案

您的算法的问题在于,如果人员的名字等于您正在搜索的键,则将 isAMatch 设置为 true,但不将该人员添加到列表中。这是有缺陷的部分:

...code omitted...

} else if (String.format("%d", p.getAge()).equals(searchFor))
if (isAMatch) {

matches.add(p);
}

Printer.printPersonList(matches);

}

...code omitted...

仅当 String.format("%d", p.getAge()).equals(searchFor) 时才执行 if(isAMatch) 代码 - 有之后没有左/右括号来指示代码块。

关于java - 在数组中查找值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23280821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com