我正在尝试为我的程序创建一个交互式菜单,用于处理对象数组(“学生”)。问题出在我的第二个开关函数,案例1.它一直给我一个myArray尚未初始化的错误。我在main方法中首先声明了myArray,并认为在我的第一个开关中初始化它会初始化myArray的所有情况。 (注意,我的第一个开关是“是”和案例“否”没有问题。) 对我来说,似乎我无法访问while循环之外的初始化数组。有没有解决的办法?
public static void main(String[] args) {
Student[] myArray;
System.out.println("Welcome.");
//stuff
System.out.println("Please type \"Yes\" or \"No\".");
switch (keyboard.next()) {
case "Yes":
String filename = myFile;
myArray = readListFromFile(filename); //sends to setters in class Student
//more stuff
break;
case "No":
myArray = readList(); //allows for manual input then sends to setters
//stuff
break;
default:
System.out.println("Unrecognized option.");
}
// add a new switch
switch(keyboard.nextInt()) {
case 1:
averageScore(myArray); //The local variable myArray may not have been initialized
}
}
提前致谢。
答案 0 :(得分:1)
有两种选择。要么在开头声明你的数组:
Student[] myArray = null;
或在switch语句中,默认情况下:
myArray = null;
或者init作为空数组以避免Nullpointer。
答案 1 :(得分:0)
如果输入不是“是”或“否”,您将仅通过默认值。那么你的数组没有被初始化。
Student[] myArray = null;
在声明或
myArray = null
在您的交换机的默认部分将解决此问题。