我正在为学校设计一个简单的程序,它是一个简单的String生成器,正在正确定义数组大小,但是当我运行该程序时,会抛出ArrayIndexOutOfBoundsException: 0。我在构造函数,名称和类中初始化变量。 name是学生的名字,classes是学生每天上多少课。我的数组的大小是使用classes定义的。这是我的构造函数和变量。

protected String name = "";
protected int classes;
private String schedule = "";
private String[] course = new String[classes];
private String[] room = new String[classes];
private int[] Period = new int[classes];

public StringBuilderHandler(String name, int classes) {
    this.name = name;
    this.classes = classes;
}


我正在使用for循环来设置字符串计划。

private void setClass(int index) {
    Scanner scan = new Scanner(System.in);
    class[index] = scan.nextLine();
}

private void setPeriod(int index) {
    Scanner scan = new Scanner(System.in);
    period[index] = scan.nextInt();
}

public void setRoom(int index) {
    Scanner scan = new Scanner(System.in);
    room[index] = scan.nextLine();
}

public void buildSchedule() {
    for (int i = 0; i < classes; i++) {
        System.out.println("What is your class?");
        setClass(i);
        System.out.println("What period is this class?");
        setPeriod(i);
        System.out.println("What room is this class?");
        setRoom(i);
        schedule = schedule +"Period "+period[i]+"\t"+course[i]+"\tRoom "+room[i]+"\n";
    }
}


有任何想法吗?

最佳答案

您的class实例变量的默认值为0,因为您尚未对其进行初始化。因此,所有数组都将初始化为零大小。因为数组的大小为零,所以没有索引0,因此您将获得一个例外。您需要将classes实例变量初始化为非零正值。

如果您尝试向数组中插入比其大小更多的值,则可能仍会得到ArrayIndexOutOfBoundsException。一种快速的解决方案是使用ArrayList而不是数组。

关于java - 阵列执行阶段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12756788/

10-13 01:53