gpt4 book ai didi

java - JavaFX 的 OutOfBoundsException

转载 作者:行者123 更新时间:2023-11-30 07:19:49 25 4
gpt4 key购买 nike

我的代码有问题。我正在编写一个必须管理每周深蹲训练的程序。可以记录之前的训练或安排一整周的训练。在第二种情况下,用户必须输入每天的深蹲次数和他认为的难度。我用一个有 3 种声音(简单、中等、困难)的选择框来管理每天的难度,当我读取所选值时,我将其保存为 int 以便轻松地将其用于程序中的其他操作(简单 = 1、中=2、硬=3)。

现在,我的问题是我有 7 个 choiceBox,每天一个,而我只需要一种方法来处理它们。每次用户从这些 choiceBox 之一中选择一个值时,它应该调用扫描所有 7 个 choiceBox 的值并更新相对 int 值的方法。我采用这种解决方案是因为我只使用 7 个 choiceBox 的一种方法,并且我不知道哪个方法调用该方法。为此,我创建了一个 choiceBox vector ,并使用了从 0 到 < .length 的 for cicle,但每次我在任何 choiceBox 中选择一个语音时,cicle 都会超出范围。我还创建了一个相对的 int 数组来解决不同的困难。

这里是异常和我的方法:

线程“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 =arrayCB.length (=第一个 int ,其中 j < arrayCB.length 产生 false )。这当然会导致ArrayIndexOutOfBoundsException .

因为您显然需要访问 j 的值执行循环体时的字段,您需要将其复制到变量:

for (j = 0; j < arrayCB.length; j++) {
final int index = j;

arrayCB[j].getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue ov, Number oldValue, Number newValue) {

if ((Integer) newValue >= 0 && (arrayCB[index].getItems().get((Integer) newValue).equals("Easy")))
arrayDifficulties[index] = "1";
...
}
});
}

此外j可能不应该首先声明为字段

关于java - JavaFX 的 OutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37776454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com