Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 2D数组排序_Java_Arrays_Sorting_Multidimensional Array_2d - Fatal编程技术网

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