Java 2D数组排序
我正在为大学做一项作业,我正在努力弄清楚为什么这一行行不通Java 2D数组排序,java,arrays,sorting,multidimensional-array,2d,Java,Arrays,Sorting,Multidimensional Array,2d,我正在为大学做一项作业,我正在努力弄清楚为什么这一行行不通 return Full_Name.compareTo(Age, Student_ID, Comm_Marks, Work_Exp_Marks,Mathematics_Marks); 我试着去搞乱它,在谷歌上快速搜索错误修正,但什么都没找到(至少对我来说是这样) 我需要做的是按照字母顺序组织数组,然后其他数组值跟随它原来旁边的值。因此,例如,当全名数组按字母顺序排序,Bruce Wayne按字母顺序排序时,学生ID“RP0023”必须跟
return Full_Name.compareTo(Age, Student_ID, Comm_Marks, Work_Exp_Marks,Mathematics_Marks);
我试着去搞乱它,在谷歌上快速搜索错误修正,但什么都没找到(至少对我来说是这样)
我需要做的是按照字母顺序组织数组,然后其他数组值跟随它原来旁边的值。因此,例如,当全名数组按字母顺序排序,Bruce Wayne按字母顺序排序时,学生ID“RP0023”必须跟随Bruce Wayne,以及年龄数组和受试者的分数……如果这有意义,后面还有更多步骤,但这是作业中最难完成的部分。我已经为这个问题挣扎了一个星期了。讲师建议使用Compare to函数进行排序,这就是我一直在尝试的
我真的很想尽快完成排序,这样我就可以继续作业了,因为如果不进行排序,我就无法继续。希望我涵盖了我需要的一切,并且有意义。此外,我正在编写代码,并确保它在控制台中以可读的方式打印之前工作正常
package javaapplicationtest;
import java.util.Arrays;
import java.util.Comparator;
public class JavaApplicationTest
{
public static void main(String[] args)
{
Integer[] proxyLookup = new Integer[]{0, 1, 2, 3, 4, 5, 6, 7};
String[][] Full_Name
= {
{"Bruce Wayne", "Dinah Lance", "Celina Kyle", "Clark Kent"},
{"Barry Allen", "Barbara Gordon", "Hal Jordon", "Ray Palmer"}
};
int[][] Age = {
{18, 19, 23, 34},
{19, 16, 24, 37}
};
String[][] Student_ID
= {
{ "RP0023", "RP0024", "RP0025", "RP0026"},
{"RP0027", "RP0028", "RP0029", "RP0030"}
};
Double[][] Comm_Marks
= {
{87.4, 67.8, 45.3, 14.5} ,
{76.8, 54.2, 56.3, 98.2}
};
Double[][] Work_Exp_Marks
= {
{67.5, 72.6, 97.5, 76.2} ,
{83.0, 45.5, 37.1, 87.4}
};
Double[][] Mathematics_Marks
= {
{92.4, 54.3, 56.3, 67.3} ,
{23.4, 67.4, 84.4, 90.0}
};
System.out.println("Unsorted Array: \n ==============");
for (int index : proxyLookup)
{
System.out.println(Full_Name[index] + ";" + Age[index] + ";" + Student_ID[index]);
}
Arrays.sort(proxyLookup, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return Full_Name.compareTo(Age, Student_ID, Comm_Marks, Work_Exp_Marks,Mathematics_Marks);
}
});
System.out.println("Sorted Aray: \n ==============");
for (int index : proxyLookup) {
System.out.println(Full_Name[index] + "; " + Age[index] + "; " + Student_ID[index]);
}
}
}
包javaapplicationtest;
导入java.util.array;
导入java.util.Comparator;
公共类JavaApplicationTest
{
公共静态void main(字符串[]args)
{
整数[]proxyLookup=新整数[]{0,1,2,3,4,5,6,7};
字符串[][]全名
= {
{“布鲁斯·韦恩”、“黛娜·兰斯”、“塞琳娜·凯尔”、“克拉克·肯特”},
{“巴里·艾伦”、“芭芭拉·戈登”、“哈尔·乔登”、“雷·帕尔默”}
};
int[][]年龄={
{18, 19, 23, 34},
{19, 16, 24, 37}
};
字符串[][]学生ID
= {
{“RP0023”、“RP0024”、“RP0025”、“RP0026”},
{“RP0027”、“RP0028”、“RP0029”、“RP0030”}
};
双[][]个通信标记
= {
{87.4, 67.8, 45.3, 14.5} ,
{76.8, 54.2, 56.3, 98.2}
};
双[]工作经验分数
= {
{67.5, 72.6, 97.5, 76.2} ,
{83.0, 45.5, 37.1, 87.4}
};
数学双[]分
= {
{92.4, 54.3, 56.3, 67.3} ,
{23.4, 67.4, 84.4, 90.0}
};
System.out.println(“未排序的数组:\n================”;
for(内部索引:proxyLookup)
{
System.out.println(全名[索引]+“;”+年龄[索引]+“;”+学生ID[索引]);
}
sort(proxyLookup,新的Comparator(){
@凌驾
公共整数比较(整数o1,整数o2){
返回全名。比较(年龄、学生ID、通信分数、工作经验分数、数学分数);
}
});
System.out.println(“排序的Aray:\n======================”;
for(内部索引:proxyLookup){
System.out.println(全名[索引]+“;”+年龄[索引]+“;”+学生ID[索引]);
}
}
}
可能您的讲师建议将此类学生作为课堂实例,然后使用比较来比较他们?
像
你好!我不知道你在问什么。堆栈溢出不是获取调试代码的开放式帮助的好地方。通过提出具体问题,你会在这里做得更好。在读了你的三遍之后,我仍然无法理解你想做什么。看来你想让我们做你的家庭作业。我为混淆道歉,我会更新描述,我的问题是这一行(返回全名。compareTo(年龄、学生ID、Comm\u分数、Work\u Exp\u分数、Mathematics\u分数);),因为它在compareTo上给了我一个错误,我不知道为什么会给我一个错误。我已经用不同的方法处理过了,仍然给我错误,但是当我将它用于单个阵列时,它工作得非常完美。。。我不知道我做错了什么,我也不想让别人替我做我的工作,我只是被错误弄糊涂了,我添加了所有的代码,以防某个部分导致错误,你甚至没有告诉我们错误是什么。通常错误会准确地告诉你错误所在。对不起,我只是急于找到解决方案,以便我可以自己完成剩余的作业,并在周五之前交上来。因此,我很抱歉我的问题缺乏细节,如果我的措辞、拼写有错,语法etcFull_Name.compareTo在我看来不存在。很抱歉,回复太晚,没有。他不是问比较不同的数组,而是可能使用比较到对数组进行排序(a-z)我一直在努力解决这个问题,所以我从零开始,我尝试使用一种似乎适用于一维数组但不适用于二维数组的方法。我是学习Java的新手,所以我正在努力完成这项工作,而且我对此感到非常紧张,所以请原谅我的困惑和所有这些。
public class Student {
private String fullName;
private int age;
private String studentId;
private double commMarks;
private double workExpMarks;
private double mathematicsMarks;
public Student(String fullName, int age, String studentId, double commMarks, double workExpMarks, double mathematicMarks) {
this.fullName = fullName;
this.age = age;
this.studentId = studentId;
this.commMarks = commMarks;
this.workExpMarks = workExpMarks;
this.mathematicsMarks = mathematicMarks;
}...getters and setters omitted...
}
class Calculations {
public static void main(String[] args) {
Student s1 = new Student("Bruce Wayne", 18, "RP0023", 87.4, 67.5, 92.4);
Student s2 = new Student("Dinah Lance", 19, "RP0024", 67.8, 72.6, 54.3);
...etc...
Student[] proxyLookup = new Student[]{s1, s2, s3, s4, s5, s6, s7, s8};
Arrays.sort(proxyLookup, (o1, o2) -> {
if (o1.getFullName().compareTo(o2.getFullName()) != 0)) {
return o1.getFullName().compareTo(o2.getFullName());
}
if (o1.getStudentId().compareTo(o2.getStudentId()) != 0)){
return o1.getStudentId().compareTo(o2.getStudentId());
}
...etc...
});
}
}