当我尝试运行此命令时,我的增强型 for 循环返回 IndexOutOfBoundsException:
public static ArrayList<Double> multipliser(ArrayList<Double> listen, int multi) {
for(double elementer : listen) {
listen.set((int) elementer, listen.get((int) elementer * multi));
}
return listen;
它与一个好的旧 for 循环完美配合:
for(int i = 0; i < listen.size(); i++) {
listen.set(i, listen.get(i) * multi);
}
return listen;
我错过了什么?
最佳答案
listen.get((int) elementer * multi)
与
不同listen.get(i)*multi
在集合
中也是如此。
但是将列表中的所有内容乘以就地常量(在 Java 8+ 中)的更简单方法是:
listen.replaceAll(x -> x * multi);
Java 8 之前的最简单方法是使用 ListIterator
:
for (ListIterator<Double> it = listen.listIterator(); it.hasNext();) {
it.set(it.next() * multi);
}
(请注意,这大致是 Java 8+ 中 Collection.replaceAll
的默认实现的外观)。
关于java - 使用增强型 for 循环时的 IndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48585888/