À l'aide de la méthode compareTo avec un tableau à trier les élèves par leur nom et leur score à un test d'

J'ai besoin d'utiliser la même interface et une méthode compareTo de tri d'une liste d'élèves par ordre alphabétique, puis par le test du score. J'ai du mal à obtenir que cela fonctionne dans mon application.

La liste des noms doit être lu à partir d'un fichier texte. Je ne sais pas combien de noms dans le fichier texte que mon professeur utilise, sauf qu'il sera à moins de 100. Je suis aussi censé afficher la moyenne des notes en bas ainsi que d'en écrire un message à côté de tout étudiant qui est de 15 points en dessous de la moyenne. Je n'ai pas vraiment appris à la rédaction de partie du message que je suis actuellement bloqué sur l'obtention des noms et des scores à imprimer et de les trier.

Le fichier texte doit ressembler à quelque chose comme ceci:

Steelman Andrea 95

Murach Joel 98

Doug Lowe 82

Murach Mike 93

C'est ce que j'ai jusqu'à présent... si quelqu'un pouvait me donner un peu de direction, je l'apprécierais. Je vous remercie.

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;
}
}

}

  • Vous rencontrez un problème spécifique?
  • Je ne peux pas obtenir mon code pour trier la liste... je pense que je ne suis pas à comprendre comment utiliser le tableau et la méthode compareTo que le code que j'ai écrit n'est pas de travail.
InformationsquelleAutor newB | 2012-11-10