我正在为学校设计一个简单的程序,它是一个简单的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/