gpt4 book ai didi

java - 在 ArrayList 中找不到对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:51:32 24 4
gpt4 key购买 nike

我试图通过使用对象的名称在另一个类中的数组列表中查找对象。

private void listParticipant() {
System.out.print("Put in name of participant to see if currently registered: ");
String name = readString();

for (Team team : teamList) {
if (team.hasParticipantWithName(name)) {
System.out.println("Participant is registered.");
return;
}
}

System.out.println("Participant does not exist.");
}

但即使我知道列表中包含我输入的名称,它也会返回“参与者不存在”。

这是我用来查找名称的团队类中的方法:

public boolean hasParticipantWithName(String name) {
for (Participant part : participantList) {
if (name.equals(part.getFullName())) {
return true;
}
}
return false;
}

这是我在另一个类中的 getFullName 方法,它包含参与者的构造函数。

public String getFullName(){
String capitalizedLastName = lastName.substring(0, 1).toUpperCase()+lastName.substring(1);
String capitalizedFirstName = firstName.substring(0, 1).toUpperCase()+firstName.substring(1);
return (capitalizedFirstName + " " + capitalizedLastName);
}

使用构造函数添加对象

public Participant(String firstName, String lastName, int id)

然后输入例如“john smith”和“John Smith”

我读取的字符串是

    private String readString() {
return keyboard.nextLine().toLowerCase();
}

我不确定如何修复它。我试过用小写和大写的第一个字符调用名称,但该方法对所有内容都返回“不存在”。有任何想法吗? :)

最佳答案

您正在使用此行从您的扫描器读取:

return keyboard.nextLine().toLowerCase();

并从中获取全名

public String getFullName(){
String capitalizedLastName = lastName.substring(0, 1).toUpperCase()+lastName.substring(1);
String capitalizedFirstName = firstName.substring(0, 1).toUpperCase()+firstName.substring(1);
return (capitalizedFirstName + " " + capitalizedLastName);
}

一方面,您要求输入小写,另一方面,您强制全名的第一个字符为大写。这永远不会相等。

你可以

  • getFullName() 结果上调用 String.toLowerCase(),因为输入已经是小写,两者都匹配,
  • 使用 String.equalsIgnoreCase(String) 忽略两个值的大小写

注意:最后一个比较安全,因为你不需要为自己设置一个特定的案例(较低或较高),它会在方法中完成。

关于java - 在 ArrayList 中找不到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41590721/

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