2015-04-15 1 views
0
Collections.sort(orderedStudents, new Comparator<Student>() { 
     public int compare(Student s1, Student s2) { 
      return s2.getAggregate().compareTo(s1.getAggregate()); 
     } 
    }); 

Ceci est la méthode i utilisé.Lecture et écriture d'un fichier texte dans l'ordre croissant. (Petit/ERROR- ennuyeux presque terminée)

+0

Quel est le problème? Mauvais tri? J'ai lu la question, mais je ne comprends pas ce que vous obtenez après l'édition – user2340612

+0

@ user2340612 Il ne fait rien et je ne sais pas comment s'y prendre. – bob9123

+0

Eh bien, vous faites le tri après que vous écrivez au fichier – user2340612

Répondre

1

Le problème est la méthode getAggregate:

public Double getAggregate(){ 
    double d = 0; 
    double aggregatescore = d/marks.size(); 
    return aggregatescore; 
} 

Depuis d est égal à zéro, cette méthode renvoie toujours 0, donc la méthode Collections.sort(...) ne fera rien

+1

Dam Je suis tellement stupide. Complètement oublié de le changer. Je l'ai réparé, merci. – bob9123

+0

Ne vous inquiétez pas, ces choses arrive :) Je suggère également d'utiliser 'getAggregate' également lors de l'impression au fichier (en ce moment vous recalculant cette valeur) – user2340612

0

Le code que vous avez écrit il écrit le fichier, trie les données, supprime les données. Vous devez trier avant d'écrire si vous voulez que les résultats apparaissent dans le fichier.

Plus ceci:

Collections.sort(orderedStudents, new Comparator<Student>() { 
     public int compare(Student s1, Student s2) { 
      return s2.getAggregate().compareTo(s1.getAggregate()); 
     } 
    }); 

    // Now we can do writing. 
    writer = new PrintWriter(new FileOutputStream(new File("RankedList.txt"))); 
    for (Student s: orderedStudents) { 
     s.writeToPW(writer); 
    } 
    writer.close(); 

Si l'ordre semble descendre plutôt que monter s1 et s2 échange dans la fonction de comparaison.