Java 按分数排序

Java 按分数排序,java,Java,我有这样的代码,我需要底部提到的指定输出,如果我的解释不清楚,很抱歉,这是我的代码: public static int[] bubbleAscending(int x[], String y[], int z[]) {//sort by score for (int i = 0; i < (z.length-1); i++) { for (int j = 0; j < (z.length-i-1); j++) { if (z[j] &

我有这样的代码,我需要底部提到的指定输出,如果我的解释不清楚,很抱歉,这是我的代码:

public static int[] bubbleAscending(int x[], String y[], int z[]) {//sort by score
    for (int i = 0; i < (z.length-1); i++) {
        for (int j = 0; j < (z.length-i-1); j++) {
            if (z[j] > z[j + 1]) {
                int temp = z[j];
                z[j] = z[j + 1];
                z[j + 1] = temp;
            }
        }
    }
    return z;
}

public static void showArray(int[] x, String[] y, int[] z) {
    for(int i= 0; i < x.length; i++) {
        System.out.println(x[i]+"   "+y[i]+"    "+z[i]);
    }
    System.out.println("");
}

public static void main(String[] args) {
    int number[] = {23,43,54,67,76};
    String name[] = {"Angeline","Brian","Catherine","Daniel","Elliot"};
    int score[] = {89,56,46,93,67};
    System.out.println("********************");
    System.out.println("       DATA    ");
    System.out.println("********************");

    System.out.println(".:. Score Data : ");
    System.out.println("------------------------------");
    System.out.println("NUMBER  Name    Score");
    System.out.println("------------------------------");
    showArray(number,name,score);
    
    nilai1 = bubbleAscending(number,name,score);
    System.out.println("Data After Sorting");
    System.out.println("********************");
    System.out.println("       DATA    ");
    System.out.println("********************");

    System.out.println(".:. Score Data : ");
    System.out.println("------------------------------");
    System.out.println("NUMBER  Name    Score");
    System.out.println("------------------------------");
    showArray(number,name,score);
}
但是我的输出:

NUMBER  Name        Score
23      Angeline    46
43      Brian       56
54      Catherine   67
67      Daniel      89
76      Elliot      93

现在我的问题是如何根据分数对数字和名称进行排序?谢谢

同时对x和y数组进行排序

根据“Score”下的输出,您知道排序算法按预期工作,所以这不是问题所在。但是,如果查看内部部分:

if (z[j] > z[j + 1]) {
    int temp = z[j];
    z[j] = z[j + 1];
    z[j + 1] = temp;
}
您只是在修改z数组,而不是其他两个


附录:Rohan Kumar给出的解决方案更干净、更灵活。但是,我很确定这是一个家庭作业问题,或者是一次排序多个数组的编码挑战。

我认为最好将这三个
数字
名称
分数
字段合并到一个类中:

私人静态类学生{
整数;
字符串名;
智力得分;
公立学生(整数编号、字符串名称、整数分数){
这个数字=数字;
this.name=名称;
这个分数=分数;
}
}
这样,您就不必处理维护三个不同数组的问题,您可以创建一个
Student
数组,该数组将具有以下所有属性:

Student[]学生=新学生[]{
新生(23岁,“安吉琳”,89岁),
新生(43岁,“布莱恩”,56岁),
新生(54岁,“凯瑟琳”,46岁),
新生(67岁,“丹尼尔”,93岁),
新生(76岁,“埃利奥特”,67岁)
};
这也会使你的分类更加容易和灵活

按分数排序:

array.sort(学生、比较器、比较(o->o.score));
按名称排序:

array.sort(student,Comparator.comparing(o->o.name));
按编号排序:

array.sort(student、Comparator.comparingit(o->o.number));

用这三个字段创建一个
Student
类要比单独管理三个数组容易得多。你是说封装吗?是的,这样你可以很容易地按任何字段排序。请尝试一下,谢谢回复
if (z[j] > z[j + 1]) {
    int temp = z[j];
    z[j] = z[j + 1];
    z[j + 1] = temp;
}