java - 处理二维数组排序的任务

标签 java arrays sorting multidimensional-array

我被分配了一项任务,要求我使用二维阵列。我必须读入一个文件并将其导出到一个二维数组。我只能有一个方法,但我无法正确排序数组。我应该以 3 种方式对数据进行排序(按姓名字母顺序排列,分数从高到低;每个学生的分数从高到低,按 3 分的平均值从高到低。)到目前为止,我已经

import java.util.*;
import java.io.*;

public class ScoreSorter {
    public static void main(String[] args) {

        int student_num = 30;
        String[][] DataInTableArr = new String[30][6];
        try {
            BufferedReader ReadIn = new BufferedReader(new FileReader("classZ.csv"));
            for (int i = 0; i < 30; i++) {
                String DataIn = ReadIn.readLine();
                String[] DataInArr = DataIn.split(",");
                DataInTableArr[i][0] = DataInArr[0];
                DataInTableArr[i][1] = DataInArr[1];
                DataInTableArr[i][2] = DataInArr[2];
                DataInTableArr[i][3] = DataInArr[3];
                int temptest1 = Integer.parseInt(DataInArr[1]);
                int temptest2 = Integer.parseInt(DataInArr[2]);
                int temptest3 = Integer.parseInt(DataInArr[3]);
            }
        } catch (Exception e) {
            System.out.println("Whoops, you messed up, RESTART THE PROGRAM!!!!!");
        }
    }
}

我不知道如何解决剩下的任务...如果有人能告诉我最有效的方法,也许还有一个例子,我将不胜感激...

最佳答案

一个合理的方法是创建一个实现 Comparable 接口(interface)的 Student 类,它具有以下成员:

String name;
int scoreOne;
int scoreTwo;
int scoreThree;
compareTo(Student s) { //implement the comparison following 3 criteria you mentioned }

然后,逐行读取文件,为每一行创建一个 Student 对象,并将所有行放入 TreeSet 中。这样,TreeSet 和 compareTo 方法将帮助我们自动对 Students 进行排序。

最后,迭代排序后的 TreeSet 来填充二维数组。

关于java - 处理二维数组排序的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33710224/

相关文章:

javascript - jQuery - 通过改变合并两个数组

java - 给定 +ve 个整数数组,找出在 O(n) 时间和常数空间中出现奇数次的数字。

c - 使用 strcpy 进行冒泡排序

javascript - 在比较器中使用 "less/greater than"比较运算符对字符串进行排序

java - 加载RSA公钥错误DerInputStream.getLength() : lengthTag=109,太大

java - JTextArea - 只有数字

java - 如何让图片和文字并排显示 itext

java - 检查数组中模式的递归方法

c++ - 在cpp中使用for_each循环遍历数组

java - 按日期对具有 itemBean 的列表进行排序?