【发布时间】:2016-06-12 16:15:14
【问题描述】:
我的代码有问题。我正在编写一个必须管理每周深蹲训练的程序。有可能记录以前的培训或编程一整周。在第二种情况下,用户必须输入每天的深蹲次数和他认为的难度。我用一个有 3 个声音(简单、中等、困难)的选择框来管理每天的难度,当我读取所选值时,我将其保存为 int 以便在程序中轻松使用它(easy= 1,中等=2,硬=3)。
现在,我的问题是我有 7 个选择框,每天一个,我只需要一种方法来处理它们。每次用户从其中一个选择框中选择一个值时,它应该调用扫描所有 7 个选择框的值并更新相对 int 值的方法。我采用了这个解决方案,因为我只对 7 个选择框使用了一种方法,我不知道是哪一种调用了该方法。为此,我创建了一个choiceBox 向量并使用从0 到
这里的异常和我的方法:
线程“JavaFX 应用程序线程”中的异常 java.lang.ArrayIndexOutOfBoundsException:7
public void weekDifficulties() {
for (j = 0; j < arrayCB.length; j++) {
arrayCB[j].getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue ov, Number oldValue, Number newValue) {
if ((Integer) newValue >= 0 && (arrayCB[j].getItems().get((Integer) newValue).equals("Easy")))
arrayDifficulties[j] = "1";
else if ((Integer) newValue >= 0 && (arrayCB[j].getItems().get((Integer) newValue).equals("Medium")))
arrayDifficulties[j] = "2";
else if ((Integer) newValue >= 0 && (arrayCB[j].getItems().get((Integer) newValue).equals("Hard")))
arrayDifficulties[j] = "3";
}
});
}
}
感谢您的帮助
【问题讨论】:
-
请指定引发异常的确切行。另外 -
j在哪里定义?如果它是类成员,那么所有处理程序都会引用它,并且都将使用arrayCB.length的值,即 for 循环结束后j的值。 -
这不是问题,但是如果在任何 if 语句之前将
(Integer) newValue和arrayCB[j].getItems()设置为变量,阅读代码会更容易
标签: java javafx indexoutofboundsexception