为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

梦里花落0921 2023-03-31 16:30:17
我试图通过在控制台中键入人员姓名来获取人员在数组中的位置。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);我希望能够在控制台中输入一个名称,然后它将显示人员在数组中的位置。请提供任何形式的帮助。谢谢
查看完整描述

3 回答

?
jeck猫

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

}


查看完整回答
反对 回复 2023-03-31
?
呼啦一阵风

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”的任何属性名称,您没有将它打印到控制台


查看完整回答
反对 回复 2023-03-31
?
12345678_0001

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

 }


查看完整回答
反对 回复 2023-03-31
  • 3 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信