如何从具有不同值的类型类的ArrayList中获取特定值

时间:2020-09-12 21:42:08

标签: java oop arraylist

这是一个单独的文件,名为students.java。我用下面提到的Student类制作了一个名为Student.java的文件,它具有3个属性,分别是构造函数,setters和getters。

我创建了一个Student类型的ArrayList,student是具有三个属性的类:名称,国籍和平均成绩。我在ArrayList中放入了三个学生对象,现在我需要进行最大程度的搜索,找到平均成绩最高的学生,并输出他们的名字。如何在数组列表中仅选择学生的平均成绩。

public class Students {

private final ArrayList<Student> data;

public Students() {
    this.data = new ArrayList<>();
}


public static void main(String[] args) {
    ArrayList<Student> data = new ArrayList<Student>();
    Scanner in = new Scanner(System.in);

    for (int i = 1; i <= 3; i++) {
        String students_name = Console.readLine("What is the name of the student? ");
        String students_nationality = Console.readLine("What is the students nationality? ");
        double students_average = Console.readDouble("What is the students average? ");

        Student newStudent = new Student(students_name, students_nationality, students_average);

        data.add(newStudent);
        System.out.println(newStudent.toString());
    }

我这样做是为了将学生放在ArrayList中。当我放

double maximumGrade = newStudent.getGrade_average();

在循环内部,它起作用。但是我想在循环之外做。如何为第一名学生分配最高平均成绩,然后检查其他学生的平均成绩是否高于第一名学生。对于我来说,在cpp中这样做相对容易。但是我不太擅长Java和面向对象编程,所以我感到迷茫。

此后,我想做一个for循环(我将以某种方式编写它,以便您了解我在想什么bc idk如何在Java中准确地实现它

double maximumGrade = newStudent.grade_average[0] (basically get the grade average of the first student)
for(int i = 1; i<3; i++)
{
  if(newStudent.grade_average[i] > maximumgrade)
{
   maximumGrade = newStudent.grade_average[i];
}
else
{
i++;
}
}

我不知道该如何提出这个问题。我是Java的新手,并且在那里使用过这些术语,但希望您能理解。谢谢!

0 个答案:

没有答案