3 回答
TA贡献1909条经验 获得超7个赞
如果您不限于使用数组,则可以使用映射而不是数组来存储对象。以姓名为键,以学生对象为键。与将对象存储在数组中并循环查找匹配的名称相比,这将是一种更快的查找。
HashMap<String, Students> map = new HashMap<>();
map.put("Helen", new Students("Helen", "Jones", 10));
map.put("Fred", new Students("Fred", "Smith", 15));
...
Scanner userInput = new Scanner(System.in);
System.out.println("Enter Forename");
String name = userInput.nextLine();
Students studentToFind;
if(map.contains(name))
{
studentToFind = map.get(name);
//do stuff with the student
}
else
{
System.out.println("No student with name " + name + " was found");
}
TA贡献1802条经验 获得超6个赞
我想我可能知道如何解决你的问题
这是你的代码
...
System.out.println("Enter Forename");
String name = userInput.nextLine();
println(Arrays.asList(student).indexOf(name));
你应该把它改成
...
HashMap<Name, Student> studentz = new HashMap<>();
System.out.println("Enter Firstname");
String name = userInput.nextLine();
Arrays.asList(student).indexOf(studentz.get(codeIsIn));
问题是您试图查找字符串 NAME 的索引而不是对象字符串的索引在
如果你想得到它最后所在的对象,只需使用
...
println(studentz.get(codeIsIn))
顺便说一下,将 Name 替换为“Helen”的任何属性名称,您没有将它打印到控制台
TA贡献1802条经验 获得超5个赞
您要么需要 forEach 您的列表并根据对象名称检查名称,要么过滤列表并获取匹配的对象。
int index= -1
for(int i =0;i<students.length();i++){
if(students[i].getFirstName().compareToIgnoreCase(name)){
index = i;
}
}
if(index<>-1){
//name was found do something
}
添加回答
举报