Java 如何创建一(2)个6乘3的二维数组,并可以容纳字符串和整数

Java 如何创建一(2)个6乘3的二维数组,并可以容纳字符串和整数,java,arrays,sorting,multidimensional-array,Java,Arrays,Sorting,Multidimensional Array,我正在尝试创建一个包含字符串和整数的二维数组,以便稍后在代码中对它们进行排序。这是到目前为止我的代码,我在尝试编译时不断出现错误,我不确定该怎么办: public class SchoolBus { public static void main(String[] args) { Student[][] students = new Student[6][3]; students[0][0] = "Mabel"; students[0][

我正在尝试创建一个包含字符串和整数的二维数组,以便稍后在代码中对它们进行排序。这是到目前为止我的代码,我在尝试编译时不断出现错误,我不确定该怎么办:

public class SchoolBus {

    public static void main(String[] args) {
        Student[][] students = new Student[6][3];
        students[0][0] = "Mabel";
        students[0][1] = new int[1];
        students[0][2] = new Integer(2);
        students[1][0] = "Dipper";
        students[1][1] = new Integer(1);
        students[1][2] = new Integer(4);
        students[2][0] = "Sam";
        students[2][1] = new Integer(1);
        students[2][2] = new Integer(7);
        students[3][0] = "Ian";
        students[3][1] = new Integer(2);
        students[3][2] = new Integer(3);
        students[4][0] = "Jordan";
        students[4][1] = new Integer(2);
        students[4][2] = new Integer(6);
        students[5][0] = "Steven";
        students[5][1] = new Integer(2);
        students[5][2] = new Integer(9);
        System.out.println(student);
    }
}

对于其他数据结构,考虑使用例如一个集合,例如一个列表。集合允许您轻松排序

这里有一个例子:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;

public final class SchoolBus {
    private SchoolBus() {

    }

    public static void main(final String[] args) {
        final List<Student> students = new ArrayList<>();

        students.add(new Student("Mabel", 1, 2));
        students.add(new Student("Dipper", 1, 4));
        students.add(new Student("Sam", 1, 7));
        students.add(new Student("Ian", 2, 3));
        students.add(new Student("Jordan", 2, 6));
        students.add(new Student("Steven", 2, 9));

        System.out.println(students);

        Collections.sort(students, SchoolBus::compare);

        System.out.println(students);
    }

    public static int compare(final Student a, final Student b) {
        return a.getName().compareTo(b.getName());
    }

    private static final class Student {
        private final int a;
        private final int b;
        private final String name;

        public Student(final String name, final int a, final int b) {
            this.name = Objects.requireNonNull(name, "name == null");
            this.a = a;
            this.b = b;
        }

        public int getA() {
            return this.a;
        }

        public int getB() {
            return this.b;
        }

        public String getName() {
            return this.name;
        }

        @Override
        public String toString() {
            return String.format("Student: [Name=%s], [A=%s], [B=%s]", this.name, Integer.toString(this.a), Integer.toString(this.b));
        }
    }
}
import java.util.ArrayList;
导入java.util.Collections;
导入java.util.List;
导入java.util.Objects;
公共末班校车{
私家校车(){
}
公共静态void main(最终字符串[]args){
最终学生名单=新ArrayList();
添加(新学生(“Mabel”,1,2));
添加(新学生(“北斗七星”,1,4));
添加(新学生(“Sam”,1,7));
添加(新学生(“Ian”,2,3));
添加(新学生(“Jordan”,2,6));
添加(新学生(“Steven”,2,9));
系统输出打印(学生);
集合。排序(学生、校车::比较);
系统输出打印(学生);
}
公共静态整数比较(最终学员a、最终学员b){
返回a.getName().compareTo(b.getName());
}
私立静态期末班学生{
私人终审法院;
私人最终int b;
私有最终字符串名;
公立学生(最终字符串名、最终整数a、最终整数b){
this.name=Objects.requirennull(name,“name==null”);
这个a=a;
这个.b=b;
}
公共int getA(){
归还这个;
}
公共int getB(){
把这个还给我;
}
公共字符串getName(){
返回此.name;
}
@凌驾
公共字符串toString(){
返回String.format(“学生:[Name=%s],[A=%s],[B=%s]”,this.Name,Integer.toString(this.A),Integer.toString(this.B));
}
}
}

它必须是一个数组吗?这方面有更好的数据结构。您希望我们回答“我应该如何最好地存储相关整数和字符串的集合?”这个问题吗?另外,您似乎已经在某个地方定义了一个类
Student
。这将有助于我们为您创建一个更好的答案。您的数组类型是
Student
,因此它将保留该类型。您还试图打印一个不存在的变量;学生。也许你忘了结尾的“s”?尽管java.util.Arrays有打印数组字符串表示的方法,否则您将看不到它的内容,只看到一些内部数组标识符。我认为当前的代码与实际需要的代码并不接近。最终产品可能没有数组(它可能有一组
Student
s)。当我们看到实际需要什么时,我们可以提出答案,让OP尽快达到他想要的状态。