【发布时间】:2015-09-28 11:34:00
【问题描述】:
我正在尝试为我的程序创建一个交互式菜单,该菜单处理对象数组(“学生”)。问题出在我的第二个 switch 函数中,案例 1。它一直给我一个错误,即 myArray 尚未初始化。我首先在 main 方法中声明了 myArray,并认为在我的第一个 switch 中初始化它会初始化 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
}
}
提前致谢。
【问题讨论】:
-
它这样说是因为您的 while 循环可能永远不会被执行。因此添加一个默认初始化。
-
在while循环之前添加一个默认初始化。
-
编译器需要知道你的变量在你读取它之前被初始化。每条执行路径都需要初始化变量。确保这一点的最简单方法是在声明时为其分配一些东西。
标签: java arrays while-loop