Java 循环时无法访问内部初始化的数组

Java 循环时无法访问内部初始化的数组,java,arrays,while-loop,Java,Arrays,While Loop,我正在尝试为我的程序创建一个交互式菜单,它处理对象数组(“学生”)。问题出在我的第二个开关功能中,情况1。它不断给我一个错误,myArray尚未初始化。我在main方法中首先声明了myArray,并认为在第一个开关中初始化它将初始化myArray的所有情况。(注意,我的第一个开关带有“是”和“否”两种情况,可以正常工作。) 在我看来,我似乎无法访问while循环之外的初始化数组。有办法解决这个问题吗 public static void main(String[] args) { St

我正在尝试为我的程序创建一个交互式菜单,它处理对象数组(“学生”)。问题出在我的第二个开关功能中,情况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

        }
    }

提前感谢。

有两种选择。在开头声明数组:

Student[] myArray = null;
或在switch语句中,在默认情况下:

myArray = null;
或作为空数组初始化,以避免空指针。

如果输入不是“是”或“否”,则只会使用默认值。您的数组当时未初始化

Student[] myArray = null;
在声明或

myArray = null

在默认情况下,开关的一部分将修复此问题。

它这样说是因为while循环可能永远不会执行。因此,添加一个默认初始化。在while循环之前添加一个默认初始化。在读取变量之前,编译器需要知道该变量已初始化。每个执行路径都需要初始化变量。确保这一点的最简单方法是在声明时为其分配一些内容。可能是重复的,谢谢。我发现我也可以使用
Student[]myArray={}