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

时间:2015-09-28 11:34:00

标签: java arrays while-loop

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

        }
    }

提前致谢。

2 个答案:

答案 0 :(得分:1)

有两种选择。要么在开头声明你的数组:

Student[] myArray = null;

或在switch语句中,默认情况下:

myArray = null;

或者init作为空数组以避免Nullpointer。

答案 1 :(得分:0)

如果输入不是“是”或“否”,您将仅通过默认值。那么你的数组没有被初始化。

Student[] myArray = null;

在声明或

myArray = null

在您的交换机的默认部分将解决此问题。