【问题标题】:java sorting grades by grades, namesjava按等级,名称排序等级
【发布时间】:2018-06-02 22:41:24
【问题描述】:

此代码的结果是将mergedGrades 移动到一个sortedGrades 中,该排序基于按等级排序,然后是名称。我设法找到从最高到最低的等级,但我无法按名称对等级进行排序。请帮忙。

我的代码:

        public static Grades sort(Grades mergedGrades, Grades repeat) {
          Grades sortedGrades = new Grades();
            while( (mergedGrades.size() > 0)){
            Grade highComp = null;
            Grade highest = mergedGrades.get(0);

            int index = 0;
            for (int j = 0; j < mergedGrades.size(); j++) {
                highComp = mergedGrades.get(j);
                if (highComp.getGpa() > highest.getGpa()) {
                    highest = highComp;
                }
            }
            //sortedGrades.add(highest);

            for(int i = 0 ; i < mergedGrades.size(); i++){
                       for (int i = 0; i < repeat.size(); i++) {
                if (repeat.contains(highest)) {
           if(highest.getFirstName().compareTo(repeat.get(i).getFirstName()) < 0) {
        if(mergedGrades.get(i).getLastName().compareTo(highest.getLastName()) < 0) {
                            sortedGrades.add(highest);
                            System.out.println("test");
                        }
                    }
                }
            }
            sortedGrades.add(highest);
            mergedGrades.remove(index);

        }

结果应该是这样的:

   S005: Stacy, Lu 4.0
   S004: Aseef, Hernandez 3.9
   S006: Aseef, Nilkund 3.9
   S002: Jim, NLN 3.9
   S003: Misty, Fang 3.9
   S009: Steve, Calderon 3.9
   S016: Aseef, Simmons 3.9
   S010: Raj, Singh 3.8
   S018: Hamza, Nilkund 3.5
   S012: Kathy, Calderon 3.5
   S017: Hifza, Nilkund 3.3
   S011: Jason, Kramer 3.3
   S001: John, Rodgers 3.3
   S019: Chris, Peach 3.2
   S013: Roopa, Singh 3.2
   S020: Ramona, Luke 2.4
   S014: Amid, Naveed 2.4
   S015: Faith, Williams 1.0

【问题讨论】:

标签: java sorting names


【解决方案1】:

比较hashCode() 值不是对名称进行排序的方法。请改用compareTo()

if (mergedGrades.get(i).getFirstName().compareTo(
            highest.getFirstName()) < 0) {
   // mergedGrades firstname < highest firstname
}

【讨论】:

  • 感谢您的建议。我试图用它编辑它,但仍然无法正常工作。
  • 这只是解决了很小一部分问题。您需要退后一步,从整体上重新评估您的排序算法。
猜你喜欢
  • 1970-01-01
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 2018-12-12
  • 2017-03-16
  • 2013-06-29
相关资源
最近更新 更多