2015-05-25 3 views
-2

Может ли кто-нибудь объяснить, как получить самое высокое значение из всех объектов, которые я создал в моем основном классе?Найти самое высокое значение среди объектов, созданных в классе

В этом примере я создал 2 студенческих объекта в своем основном классе и добавил несколько имен и классов курса.

Я создал 2 статических массива для хранения информации с разных объектов, но не возвращает объект с наивысшим классом.

Как сохранить наивысший класс от созданных объектов ученика?

public class CMate { 
    private static String[] studentName = new String[2]; 
    private static int[][] gradeAssigned = new int[2][3]; 
    private static int higGrade = 0; 
    private String name; 
    private int cpr; 
    private String[] courseName = new String[3]; 
    private int[] grade = new int[3]; 
    private int numberOfCourse; 
    private int numberOfGrades; 
    private static int counter = 0; 

    CMate(String name, int cpr) { 
     // building constructor 
     System.out.println("Creating object nr " + counter); 
     this.name = name; 
     this.cpr = cpr; 
     // insert name into array 
     studentName[counter] = name; 
     for (int i = 0; i < numberOfCourse; i++) { 
      gradeAssigned[counter][i] = grade[i]; 
     } 
     counter++; 
    } 

    public void addcourseName(String nameOfCourse) { 
     courseName[numberOfCourse] = nameOfCourse; 
     numberOfCourse++; 
    } 

    public void addGrade(int gradeNr) { 
     grade[numberOfGrades] = gradeNr; 
     numberOfGrades++; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public int getCpr() { 
     return cpr; 
    } 

    public void setCpr(int cpr) { 
     this.cpr = cpr; 
    } 

    public String[] getCourseName() { 
     return courseName; 
    } 

    public void setCourseName(String[] courseName) { 
     this.courseName = courseName; 
    } 

    public int[] getGrade() { 
     return grade; 
    } 

    public void setGrade(int[] grade) { 
     this.grade = grade; 
    } 

    public String toString() { 
     String studentInfo = ""; 
     System.out.println("------------------------------\n student " + name + " CPR " + cpr); 

     for (int i = 0; i < numberOfCourse; i++) { 
      studentInfo += " Course " + courseName[i] + "Grade " + grade[i]; 
     } 
     return studentInfo; 
    } 

    public double averageGrade() { 
     double total = 0; 

     for (int i = 0; i < numberOfGrades; i++) { 
      total += grade[i]; 
     } 
     return (total/numberOfGrades); 
    } 

    public void higestGrade() { 
     for (int i = 0; i < studentName.length; i++) { 
      if (grade[i] > higGrade) { 
       higGrade = grade[i]; 
      } 
     } 
    } 

    public void higestObjectGrade() { 
     System.out.println(higGrade); 
    } 
} 
+0

Возможный дубликат [Сортировка массива объектов в Java] (http://stackoverflow.com/questions/14953934/sort-an-array-of-objects-in-java) – CKing

+0

Но я хочу найти самый высокий класс, который был назначен среди всех созданных объектов (учащиеся); – Rangerguy

+0

** после сортировки ** массив имеет значения в порядке возрастания/убывания. это будет либо 0, либо n-ый элемент –

ответ

0

Я не полностью понимаю ваш код, но вот упрощенная версия, в том числе статического поле, чтобы держать всех студентов, и статической функции вернуть высшую оценку:

class Student { 

    public final static List<Student> allCreatedStudents = new ArrayList<Student>(); 

    String name; 
    int[] grades = new int[3]; 

    public Student(String name){ 
    this.name = name; 
    allCreatedStudents.add(this); // Every time a student is created, he is recorded in the static list 
    } 

    public void setGrade(int grade, int index){ 
    this.grades[index] = grade; 
    } 

    public static int getHighestGrade(){ 
    int highestGrade = 0; 
    for(Student s : allCreatedStudents){ // Loop through all students 
     for(int i=0; i<s.grades.length; i++){ // Loop through all grades 
     if(s.grades[i]>highestGrade) 
      highestGrade = s.grades[i]; 
     } 
    } 
    return highestGrade; 
    } 

} 
+0

из кода @Rangerguy, это может быть ** принято **, что он не знает, если java.util.Collection. поэтому я чувствую, что прилипание к массиву будет более понятным для него –

Смежные вопросы