【问题标题】:Java 2D Array sortingJava 2D 数组排序
【发布时间】:2025-12-14 14:40:01
【问题描述】:

我正在为大学做作业,我正在努力弄清楚为什么这条线行不通

return Full_Name.compareTo(Age, Student_ID, Comm_Marks, Work_Exp_Marks,Mathematics_Marks);

我试过弄乱它,在谷歌上快速搜索错误修复,但什么也没找到(嗯……至少对我来说)

我需要做的是按字母顺序组织数组,然后是其他数组值以跟随它最初旁边的值。因此,例如,当 Full_Name 数组按字母顺序排序并且 Bruce Wayne 排序时,“RP0023”的 Student_ID 必须跟随 Bruce Wayne 以及 Age 数组和科目标记......如果这有意义的话,之后还有更多步骤,但这是需要完成的任务中最难的部分。我已经为这个问题苦苦挣扎了一个星期了。讲师建议使用比较功能进行排序,这就是我一直在尝试做的事情。

我真的很想尽快完成这个排序,这样我就可以继续分配作业,因为不进行排序就无法继续。希望我涵盖了我需要做的一切并且有意义。此外,我正在编写代码并确保它在控制台中以可读方式打印之前可以正常工作。

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



}



  }

【问题讨论】:

  • 您好!我不确定你在问什么。 Stack Overflow 不是获得开放式帮助调试代码的好地方。通过提出具体问题,你会在这里做得更好。读了你的三遍后,我仍然无法理解你在做什么。看来你想让我们做你的功课。
  • 我为造成的混乱道歉,我将更新描述,我的问题在于这一行( return Full_Name.compareTo(Age, Student_ID, Comm_Marks, Work_Exp_Marks,Mathematics_Marks); )因为它给了我一个compareTo 上的错误,我不知道为什么它给我一个错误。我已经搞砸了不同的方法,但仍然给我错误但是当我将它用于单个数组时,它工作得很好......我不知道我做错了什么,我不想要人为我做我的工作,我只是被错误弄糊涂了,我添加了所有代码,以防其中一部分导致错误
  • 你甚至没有告诉我们错误是什么。通常错误会告诉你到底哪里出了问题。
  • 抱歉,我只是急于寻找解决方案,这样我就可以自己完成其余的任务,并在星期五之前提交,所以我很抱歉我的问题缺乏细节如果我的措辞、拼写、语法等有错误
  • Full_Name.compareTo 不存在据我所知。

标签: java arrays sorting multidimensional-array 2d


【解决方案1】:

可能您的讲师建议将此类学生表示为班级实例,然后使用compareTo 进行比较? 喜欢

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

【讨论】:

  • 对不起,回复晚了,不,他不是在问比较不同的数组,而是可能使用比较来对我一直在努力的数组(a-z)进行排序,所以我开始了这一切从头开始,我正在尝试使用一种似乎适用于一维数组但不适用于二维数组的方法。我是学习 Java 的新手,所以我很难完成这件事,而且我对此感到非常压力,所以请原谅我对这一切的困惑和所有。