关于java:是否可以使用数组声明一个数组?

Is it possible to declare an array with an array?

本问题已经有最佳答案,请猛点这里访问。

我正在尝试创建一个数组,它允许我使用存储的元素创建另一个单独的数组。

以下是我目前为止的情况:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Scanner reader = new Scanner(System.in);

//variables
int NumberOfStudents;

System.out.print("How many students are in the class?:");
NumberOfStudents = reader.nextInt();
reader.nextLine();
//objects
String [] names = new String[NumberOfStudents];     //Creates an array based on the number of students

//input
for (int i = 0; i < NumberOfStudents; i++){
    System.out.print("What is student number" + (i+1) +"'s name?:");
    names[i] = reader.nextLine();
    double [] names[i] = new double [5];    //declares each student name as a separate array
}

在这里,我有一行double [] names[i] = new double [5];,它应该取索引i处的names[]数组的值,并将其转换为长度为5的数组。因此,如果names[1] = Ann,它应该创建一个长度为5的数组Ann[]。但是,它抛出了一个非法的表达式开头错误。

我试图使用一个临时变量来帮助声明多个数组,但是除了非法的表达式开头之外,我得到了更多的错误。

所以显然,您不能使用数组或变量来声明其他数组。

是否有任何方法可以在不使用多维数组的情况下修复此问题?

事先谢谢。


要做到这一点,不使用多维数组是通过创建一个Students类数组来实现的,该数组将保存有关学生的信息,如firstNamelastNamegrade等。

学生班:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Student(){

    String fname, lname;
    int grade;

    public Student(String name){
        String[] firstLast = name.split("");
        fname = firstLast[0];
        if(firstLast.length>1) lname = firstLast[1];
    }

    public string setFName(String nameOfStudent){
         fname = nameOfStudent;
         return fname;
    }

// rest of code implementation
}

在您当前的课程中:

1
Student array[] = new Student[NumberOfStudents];

那么你就可以利用你已经拥有的想法

2


看起来您正在尝试使用刚刚输入的字符串作为变量名创建数组,如下所示:

1
double[] <student_name> = new double[5];

不幸的是(或者幸运的是),您不能从另一个变量的内容中创建变量。

相反,您可以执行以下操作之一:

  • 按照KevinMee在回答中的建议去做,并使用Student课程。
  • 使用Map,就像JimGarrison在对你的问题的评论中建议的那样。
  • 使用二维数组。

如果您想尝试二维数组,您应该;在当前类中,定义一个二维数组。

1
double[][] studentInfo = new double[NumberOfStudents][5];

然后可以这样引用数组:

1
studentInfo[i][j] = aDoubleNumber;