是否可以用数组声明一个数组?

时间:2016-01-29 17:39:45

标签: java arrays

我试图创建一个允许我使用存储元素创建另一个单独数组的数组。

这是我到目前为止所拥有的:

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];,它应该取索引names[]处的i数组的值,并将其转换为长度为5的数组。所以如果{ {1}},它应该创建一个长度为5的数组names[1] = Ann。但是,它会抛出非法的表达式错误开始。

我试图使用临时变量来帮助声明多个数组,但是我在非法启动表达式的同时获得了更多错误。

显然你不能使用数组或变量来声明其他数组。

有没有办法在不使用多维数组的情况下解决这个问题?

提前致谢。

2 个答案:

答案 0 :(得分:2)

要在没有多维数组的情况下执行此操作,请创建一个Students类数组,该数组将保存学生的信息,例如firstNamelastName,{{1}等等。

学生班:

grade

在你当前的课程中:

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
}

然后你可以使用你已经拥有的想法

Student array[] = new Student[NumberOfStudents];

答案 1 :(得分:0)

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

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

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

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

  • Kevin Mee 在答案中建议的内容并使用Student课程。
  • 使用Map<String, Double[]>,例如您对问题的评论中建议的 Jim Garrison
  • 使用二维数组。

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

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

然后你可以像这样引用数组:

studentInfo[i][j] = aDoubleNumber;