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
}
添加回答
舉報