我的代碼存在問題。我正在編寫一個必須管理每週下蹲訓練的計劃。有可能記錄以前的培訓或編程一整週。在第二種情況下,用戶每天都必須輸入蹲點的數量和他認爲的難度。我用一個有三種聲音(easy,medium,hard)的選擇框來管理每天的難度,當我讀取所選的值時,我將它保存爲int以便在程序中輕鬆地使用它(easy = 1,medium = 2,hard = 3)。使用JavaFX發生OutOfBoundsException
現在,我的問題是,我有7個choiceBox,每天一個,我只需要一個方法來處理它們。每次用戶從其中一個choiceBox中選擇一個值時,它應該調用掃描所有7 choiceBox的值並更新相對的int值的方法。我採用了這個解決方案,因爲我只使用一個方法來處理7 choiceBox,我不知道哪個方法叫做方法。要做到這一點,我創建了一個choiceBox的矢量,我使用了一個從0到< .length的cicle,但是每次我在任何選擇框中選擇一個聲音時,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'的值,這是'j'在for循環結束後的值。 – Itai
這不是問題,但如果在任何if語句之前將'(Integer)newValue'和'arrayCB [j] .getItems()'設置爲變量,那麼讀取代碼會更容易 –