按升序读写文本文件。 (小/恼人的错误 - 差不多完成了)

时间:2015-04-15 17:18:52

标签: java arraylist io writer reader

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

这是我使用的方法。

2 个答案:

答案 0 :(得分:1)

问题是getAggregate方法:

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

由于d设置为零,此方法将始终返回0,因此Collections.sort(...)方法将不执行任何操作

答案 1 :(得分:0)

您编写的代码会写入文件,对数据进行排序,丢弃数据。如果希望结果显示在文件中,则必须在写入前进行排序。

更像这样:

   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();

如果订单似乎在降序而不是在比较函数中升序交换s1和s2。