将值与ArrayList Java的特定对象进行比较时出现问题

我有一个带有构造器的学生类,该构造器设置了值int s_code,字符串名称和int age。

当我创建Student类的对象时,我将其传递给ArrayList AllStudents。

我的问题是我希望用户输入一个ID并检查ArrayList中是否存在该ID。如果没有让他添加一个新学生,则告诉他再试一次。

我试图通过for和它内部遍历ArrayList 我有一个.contains的if语句,如果是真的,我有一个简单的println(“ Good”)只是为了对其进行测试。

当我运行程序时,它会跳过它。

这是我的代码:

static ArrayList<Student> AllStudents = new ArrayList<Student>();
static void InitStudents() //this is a method that creates some students when I call it in main.
{
    AllStudents.add(new Student(1,"James",15));
    AllStudents.add(new Student(2,"John",16));
    AllStudents.add(new Student(3,"Rose",15));

}


System.out.println("Enter the ID of the student you want to add.");
            Scanner get_new_code = new Scanner(System.in);
            int s_code = get_new_code.nextInt();



for(Student code : AllStudents) 
{
     if (AllStudents.contains(s_code)) //I think that I have to include age and name for it to work.
     {
        System.out.println("Good");
     }       
} 

顺便说一句,对不起,如果我没有解释什么,或者做错了完全错误的事情,我是Java的新手。

评论
  • 若弱C
    若弱C 回复

    AllStudents contains students and s_code is an int.

    您可以先通过id映射进行搜索。假设代码在名为Id的字段中。

     allStudents.stream().map(s -> Student::getId).collect(Collectors.toList()).contains(s_code);
    
  • Guy
    Guy 回复

    该高级循环无法帮助您实现它。

    for(Student code : AllStudents){          //"code" is one element out of the list
        if (AllStudents.contains(s_code)){    //here you are checking the whole list
            System.out.println("Good");
        }       
    } 
    

    这可能是您要寻找的:

    for(Student code : AllStudents){       
        if(code.getSCode() == s_code){       //here the one element named "code",
                                             //out of the list, will be checked
            System.out.println("Good");
        }       
    } 
    

    一个getter方法(例如,称为getSCode()的方法)将在这里帮助您,询问学生对象的每个属性。它将返回您正在查看的对象的s_code。