如何在for循环中使用getIndices?

问题描述 投票:0回答:1
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();

它告诉我要更改为ObservableList,但如果我要更改为我无法访问i < miscArray.lengthmiscArray[i]索引。有人可以帮忙吗?

java javafx
1个回答
1
投票

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

要获得List的大小,您可以使用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 Streams:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.