我试图通过在控制台中键入人员名称来获得人员在阵列中的位置。
public static void main(String[] args) {
Students[] student = new Students[50];
student[0] = new Students("Helen", "Jones", 10);
student[1] = new Students("Fred ", "Smith", 15);
student[2] = new Students("George", "Evans", 25);
student[3] = new Students("Malcolm", "Evans", 30);
Scanner userInput = new Scanner(System.in);
System.out.println("Enter Forename");
String name = userInput.nextLine();
Arrays.asList(student).indexOf(name);
我希望能够在控制台中输入一个名称,然后它将显示人员在数组中的位置。 请提供任何形式的帮助。 谢谢
答案 0 :(得分:0)
您需要遍历每个列表并对照对象名称检查名称,或过滤列表并获取匹配的对象。
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
}
答案 1 :(得分:0)
如果您不受限于使用数组,则可以使用映射代替对象来存储对象。使用名称作为关键字,使用学生对象作为关键字。与将对象存储在数组中并对其进行循环搜索匹配的名称相比,这将是更快的查找。
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");
}
答案 2 :(得分:0)
我想我可能会解决您的问题
这是您的代码
...
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”的任何属性名称 而且,您没有将其打印到控制台上