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;
}