猿问

如何将人员姓名输入控制台并获取人员数组索引

我试图通过在控制台中键入人员姓名来获取人员在数组中的位置。


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);

我希望能够在控制台中输入一个名称,然后它将显示人员在数组中的位置。请提供任何形式的帮助。谢谢


梦里花落0921
浏览 120回答 3
3回答

jeck猫

如果您不限于使用数组,则可以使用映射而不是数组来存储对象。以姓名为键,以学生对象为键。与将对象存储在数组中并循环查找匹配的名称相比,这将是一种更快的查找。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)){&nbsp; &nbsp;studentToFind = map.get(name);&nbsp; &nbsp;//do stuff with the student}else{&nbsp; &nbsp;System.out.println("No student with name " + name + " was found");}

呼啦一阵风

我想我可能知道如何解决你的问题这是你的代码...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”的任何属性名称,您没有将它打印到控制台

12345678_0001

您要么需要 forEach 您的列表并根据对象名称检查名称,要么过滤列表并获取匹配的对象。int index= -1for(int i =0;i<students.length();i++){&nbsp; &nbsp; if(students[i].getFirstName().compareToIgnoreCase(name)){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;index = i;&nbsp; &nbsp; }}&nbsp;if(index<>-1){&nbsp; &nbsp; //name was found do something&nbsp;}
随时随地看视频慕课网APP

相关分类

Java
我要回答