繁体   English   中英

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

[英]How do I use getIndices here with the for loop?

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,但是如果更改为ObservableList,则无法访问i < miscArray.lengthmiscArray[i]索引。 有人可以帮忙吗?

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

要获取列表的大小,您可以使用list.size()方法。 要从列表中获取元素,可以使用list.get(index) ObservableList的完整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()方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM