Java 循环时无法访问内部初始化的数组
我正在尝试为我的程序创建一个交互式菜单,它处理对象数组(“学生”)。问题出在我的第二个开关功能中,情况1。它不断给我一个错误,myArray尚未初始化。我在main方法中首先声明了myArray,并认为在第一个开关中初始化它将初始化myArray的所有情况。(注意,我的第一个开关带有“是”和“否”两种情况,可以正常工作。) 在我看来,我似乎无法访问while循环之外的初始化数组。有办法解决这个问题吗Java 循环时无法访问内部初始化的数组,java,arrays,while-loop,Java,Arrays,While Loop,我正在尝试为我的程序创建一个交互式菜单,它处理对象数组(“学生”)。问题出在我的第二个开关功能中,情况1。它不断给我一个错误,myArray尚未初始化。我在main方法中首先声明了myArray,并认为在第一个开关中初始化它将初始化myArray的所有情况。(注意,我的第一个开关带有“是”和“否”两种情况,可以正常工作。) 在我看来,我似乎无法访问while循环之外的初始化数组。有办法解决这个问题吗 public static void main(String[] args) { St
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
}
}
提前感谢。有两种选择。在开头声明数组:
Student[] myArray = null;
或在switch语句中,在默认情况下:
myArray = null;
或作为空数组初始化,以避免空指针。如果输入不是“是”或“否”,则只会使用默认值。您的数组当时未初始化
Student[] myArray = null;
在声明或
myArray = null
在默认情况下,开关的一部分将修复此问题。它这样说是因为while循环可能永远不会执行。因此,添加一个默认初始化。在while循环之前添加一个默认初始化。在读取变量之前,编译器需要知道该变量已初始化。每个执行路径都需要初始化变量。确保这一点的最简单方法是在声明时为其分配一些内容。可能是重复的,谢谢。我发现我也可以使用
Student[]myArray={}代码>