Mit der compareTo-Methode mit einem array zu Sortieren Studenten mit Namen und test-Ergebnis

Brauche ich, um vergleichbare interfact und eine compareTo-Methode zum Sortieren einer Liste der Schüler alphabetisch und dann nach test-Ergebnis. Ich habe Mühe zu bekommen, dies funktioniert in meiner Anwendung.

Die Liste der Namen gelesen werden soll aus einer text-Datei. Ich weiß nicht, wie viele Namen werden in der text-Datei, die mein professor verwendet, außer, dass es weniger als 100. Ich bin außerdem soll das display der Durchschnitt der Noten auf der Unterseite, sowie eine Nachricht schreiben, neben einem Schüler, der 15 Punkte unter dem Durchschnitt. Ich habe nicht wirklich bekommen, um das schreiben der Nachricht-Teil, wie ich bin derzeit stecken die Namen und Noten zu drucken und zu Sortieren.

Die Textdatei sollte wie folgt Aussehen:

Steelman Andrea 95

Murach Joel 98

Lowe, Doug 82

Murach Mike 93

Dies ist, was ich habe, so weit... wenn jemand könnte mir ein wenig die Richtung, ich würde es zu schätzen wissen. Danke.

package chapt11;
import java.io.FileReader;  
import java.util.Arrays; 
importjava.util.Scanner;
public class CH11AS8App {

/**
 * @param args
 */
public static void main(String[] args) throws Exception {

    System.out.println("Welcome to the Student Scores Application.");
    System.out.println();

    Scanner aScanner = new Scanner(new FileReader(
            "src//chapt11//ch11AS8data.txt"));

    Student [] studentArray;

    String lastName;
    String firstName;
    int examScore = 0;
    double average = 0;

    int nStudent = 100;  //array size not set unit run time
    studentArray = new Student[nStudent];

    for (int i=0; i<nStudent; i++)
    {
    System.out.println();

        while (aScanner.hasNext()) {
            lastName = aScanner.next();
            firstName = aScanner.next();
            examScore = aScanner.nextInt();

            System.out.println("Student " + nStudent++ + " " + firstName
                    + " " + lastName + " " + +examScore);

            studentArray[i] = new Student(lastName, firstName, examScore);


    }
        double sum = 0.0;
        sum += examScore;
        average = sum/nStudent;

        Arrays.sort(studentArray);

        System.out.println();

        for (Student aStudent: studentArray)
        {
            System.out.println(aStudent);

            if (examScore<= (average-10))
            {
                System.out.println ("Score 10 points under average");
        }
        System.out.println("Student Average:" +average);

        }
}
}
public interface Comparable {
    int compareTo(Object o);
}

class Student implements Comparable {

    private String firstName;
    private String lastName;
    private int examScore;

    public Student(String firstName, String lastName, int examScore) {
        this.firstName = firstName;
        this.examScore = examScore;
        this.lastName = lastName;
    }

    //Get & Set Methods
    public int getExamScore() {
        return examScore;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    @Override
    public int compareTo(Object o) {
        Student s = (Student) o;

        if (s.lastName.equals(lastName)) {
            return firstName.compareToIgnoreCase(s.firstName);
        } else {
            return lastName.compareToIgnoreCase(s.lastName);
        }
    }

    public String toString() {
        return lastName + ", " + firstName + ": " + examScore;

    }

}

}

  • Haben Sie ein spezielles problem?
  • I cant get my code um die Liste zu Sortieren... ich denke ich bin nicht das Verständnis, wie der array und die compareTo Methode wie ich den code geschrieben habe, funktioniert nicht.
InformationsquelleAutor newB | 2012-11-10
Schreibe einen Kommentar