如何在此使用forIn循环的getIndices?

时间:2019-03-08 23:38:31

标签: java javafx

loss=tf.losses.sigmoid_cross_entropy

我的问题出在loss=tf.losses.sigmoid_cross_entropy(training_labels, logits=logits)

它告诉我更改为ObservableList,但是如果要更改为ObservableList,则无法访问public void calculateTotal(){ int wheelIndex = wheels.getSelectionModel().getSelectedIndex(); int deckIndex = decks.getSelectionModel().getSelectedIndex(); int truckIndex = trucks.getSelectionModel().getSelectedIndex(); int [] miscArray = misc.getSelectionModel().getSelectedIndices(); int miscTotal = 0; for(int i = 0; i < miscArray.length; i++){ miscTotal += miscPrices[miscArray[i]]; } } int [] miscArray = misc.getSelectionModel().getSelectedIndices();索引。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

方法selectionModel.getSelectedIndices()返回一个ObservableList<Integer>而不是一个数组。因此,您必须使用该列表,或者将该列表转换为数组。

要获取列表的大小,您可以仅使用list.size()方法。要从列表中获取元素,可以使用list.get(index)HereObservableList的完整Java文档。

public void calculateTotal(){
    int wheelIndex = wheels.getSelectionModel().getSelectedIndex();
    int deckIndex = decks.getSelectionModel().getSelectedIndex();
    int truckIndex = trucks.getSelectionModel().getSelectedIndex();
    ObservableList<Integer> miscList = misc.getSelectionModel().getSelectedIndices();
    int miscTotal = 0;

    for(int i = 0; i < miscList.size(); i++){
        miscTotal += miscPrices[miscList.get(i)];
    }
}

或者,您可以使用Java流:

int miscTotal = miscList.stream().mapToInt(i -> miscPrices[i]).sum();

如果要将ObervableList转换为数组(我不会这样做),则可以使用list.toArray()方法。