该程序首先提示:
创建一个新的学生名单
寻找学生
出口
问题:在第二个if语句oClassList中未初始化。如何在第二个if语句中实例化的对象数组中查找第二个中的lastName?
int z = 0;
while(run) {
if(z == 0) {
System.out.println("Please choose an option. (Enter 1, 2, or 3)\n");
}
else {
System.out.println();
System.out.println("Would you like to continue? If so, please choose an option.\n");
}
System.out.println("1. New Class List");
System.out.println("2. Search for a Student");
System.out.println("3. Exit");
iUserSelection = oScan.nextInt();
Student[] oClassList;
// creates new class list
if(iUserSelection == 1) {
System.out.println();
System.out.println("How many students?");
x = oScan.nextInt();
System.out.println();
// flush the buffer
oScan.nextLine();
oClassList = new Student[x];
for(int i = 0; i < x; i++) {
System.out.println("*********************");
System.out.println("Student " + (i + 1) + " of " + x);
System.out.println("*********************");
oClassList[i] = new Student("","",0,0,0,0);
System.out.print("First Name: ");
oClassList[i].setFirstName(oScan.nextLine());
System.out.print("Last Name: ");
oClassList[i].setLastName(oScan.nextLine());
System.out.print("Homework average: ");
oClassList[i].setHWAve(oScan.nextInt());
System.out.print("Quiz average: ");
oClassList[i].setQuizAve(oScan.nextInt());
System.out.print("Project average: ");
oClassList[i].setProjectAve(oScan.nextInt());
System.out.print("Test average: ");
oClassList[i].setTestAve(oScan.nextInt());
// flush the buffer
oScan.nextLine();
System.out.println();
oClassList[i].printStudent();
}
}
if(iUserSelection == 2) {
// flush the buffer
oScan.nextLine();
System.out.println("Student search");
System.out.print("Enter last name: ");
sSearchLastName = oScan.nextLine();
System.out.print("Enter first name: ");
sSearchFirstName = oScan.nextLine();
for(int y = 0; y >= oClassList.length; y++) {
if(sSearchLastName == oClassList[y].lastName) {
System.out.println("found elements");
}
else
System.out.println("Error - Student not found");
}
}
if(iUserSelection == 3) {
run = false;
System.out.println();
System.out.println("Goodbye.");
}
z++;
}
最佳答案
您的变量Student[] oClassList;
是局部变量,嵌套在while
循环内。每当程序离开while
范围时,这将导致oClassList重置(因此每个while
处理将具有其自己的类列表)。
您可以将变量声明移至while循环上方-该变量的范围将遍及整个程序。
因此,只需将Student[] oClassList;
直接移到int z = 0;
下方,一切就可以正常工作。
编辑:
作用域不是全部,还必须初始化变量。空检查(如另一个答案中所述)也不是坏主意。
int z = 0;
Student[] oClassList = null;
while(run) {
if(z == 0) {
System.out.println("Please choose an option. (Enter 1, 2, or 3)\n");
}
else {
System.out.println();
System.out.println("Would you like to continue? If so, please choose an option.\n");
}
System.out.println("1. New Class List");
System.out.println("2. Search for a Student");
System.out.println("3. Exit");
iUserSelection = oScan.nextInt();
// creates new class list
if(iUserSelection == 1) {
System.out.println();
System.out.println("How many students?");
x = oScan.nextInt();
System.out.println();
// flush the buffer
oScan.nextLine();
oClassList = new Student[x];
for(int i = 0; i < x; i++) {
System.out.println("*********************");
System.out.println("Student " + (i + 1) + " of " + x);
System.out.println("*********************");
oClassList[i] = new Student("","",0,0,0,0);
System.out.print("First Name: ");
oClassList[i].setFirstName(oScan.nextLine());
System.out.print("Last Name: ");
oClassList[i].setLastName(oScan.nextLine());
System.out.print("Homework average: ");
oClassList[i].setHWAve(oScan.nextInt());
System.out.print("Quiz average: ");
oClassList[i].setQuizAve(oScan.nextInt());
System.out.print("Project average: ");
oClassList[i].setProjectAve(oScan.nextInt());
System.out.print("Test average: ");
oClassList[i].setTestAve(oScan.nextInt());
// flush the buffer
oScan.nextLine();
System.out.println();
oClassList[i].printStudent();
}
}
if(iUserSelection == 2) {
// flush the buffer
oScan.nextLine();
System.out.println("Student search");
if (oClassList == null) {
System.out.println("No class list defined yet");
} else {
System.out.print("Enter last name: ");
sSearchLastName = oScan.nextLine();
System.out.print("Enter first name: ");
sSearchFirstName = oScan.nextLine();
for(int y = 0; y >= oClassList.length; y++) {
if(sSearchLastName == oClassList[y].lastName) {
System.out.println("found elements");
}
else
System.out.println("Error - Student not found");
}
}
}
if(iUserSelection == 3) {
run = false;
System.out.println();
System.out.println("Goodbye.");
}
z++;
}
关于java - 对象数组困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22275908/