【问题标题】:Sorts an Array of Objects containing number and name data by displaying sort by number通过显示按数字排序,对包含数字和名称数据的对象数组进行排序
【发布时间】:2022-06-30 15:43:03
【问题描述】:

有一个包含数字和名称数据的数组如下:

    Number          Name
    10              Brycen
    6               Devan
    3               Rylan
    1               Gordy
    2               Tim
    4               Curtis
    5               Abe
    9               Melvin
    8               Ansel
    7               Dalton

输出应该是:

    Number          Name
    1               Gordy
    2               Tim
    3               Rylan
    4               Curtis
    5               Abe
    6               Devan
    7               Dalton
    8               Ansel
    9               Melvin
    10              Brycen

我已经尝试过使用对象数组和 FOR..END-FOR 循环。 System.out.println(data[i].number);按顺序显示输出,但 System.out.println(data[i].name);显示原始状态。

class StudentList { //DaftarSiswa
    public int number;
    public String name;
    
    public StudentList(int number, String name) {
        this.number = number;
        this.name   = name;
    }
}

class OrderNumber { //NomorUrut
    public static void main(String[] args) {
        StudentList[] data = new StudentList[10];
        data[0] = new StudentList(10, "Brycen");
        data[1] = new StudentList( 6, "Devan");
        data[2] = new StudentList( 3, "Rylan");
        data[3] = new StudentList( 1, "Gordy");
        data[4] = new StudentList( 2, "Tim");
        data[5] = new StudentList( 4, "Curtis");
        data[6] = new StudentList( 5, "Abe");
        data[7] = new StudentList( 9, "Melvin");
        data[8] = new StudentList( 8, "Ansel");
        data[9] = new StudentList( 7, "Dalton");
        
        for (int i = 0; i < data.length; i++) {
            for (int j = i + 1; j < data.length; j++) {
                int tmp = 0;
                if (data[i].number > data[j].number) {
                    tmp            = data[i].number;
                    data[i].number = data[j].number;
                    data[j].number = tmp;
                }
            }
            
            System.out.println(data[i].name);
        }
    }
}

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    你只是在交换数字。您需要交换整个对象。:

    Student tmp = null;
    if (data[i].number > data[j].number) {
        tmp = data[i];
        data[i] = data[j];
        data[j] = tmp;
    }
    

    【讨论】:

      猜你喜欢
      • 2020-09-04
      • 2016-11-14
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 2021-11-19
      • 2020-12-15
      • 2011-07-23
      • 2019-05-26
      相关资源
      最近更新 更多