我试图创建一个允许我使用存储元素创建另一个单独数组的数组。
这是我到目前为止所拥有的:
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
。但是,它会抛出非法的表达式错误开始。
我试图使用临时变量来帮助声明多个数组,但是我在非法启动表达式的同时获得了更多错误。
显然你不能使用数组或变量来声明其他数组。
有没有办法在不使用多维数组的情况下解决这个问题?
提前致谢。
答案 0 :(得分:2)
要在没有多维数组的情况下执行此操作,请创建一个Students
类数组,该数组将保存学生的信息,例如firstName
,lastName
,{{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];
不幸的是(或者幸运的是),你不能从另一个的内容创建一个变量。
相反,您可以执行以下操作之一:
Student
课程。Map<String, Double[]>
,例如您对问题的评论中建议的 Jim Garrison 。如果你想尝试二维数组,你应该;在当前类中,定义一个二维数组。
double[][] studentInfo = new double[NumberOfStudents][5];
然后你可以像这样引用数组:
studentInfo[i][j] = aDoubleNumber;