gpt4 book ai didi

java - 2 个数组列表如何求和?

转载 作者:行者123 更新时间:2023-12-01 21:19:13 24 4
gpt4 key购买 nike

运行代码时出现以下错误:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
at java.util.LinkedList.checkPositionIndex(Unknown Source)
at java.util.LinkedList.addAll(Unknown Source)
at Collection.Dynamycmaasiv.Collecktionaddlist.main(Collecktionaddlist.java:36)

代码

public static void main(String[] args) {
LinkedList<Integer> num = new LinkedList<Integer>();
LinkedList<Integer> numodd = new LinkedList<Integer>();
LinkedList<Integer> numeven = new LinkedList<Integer>();
LinkedList<Integer> sumoffevenandodd = new LinkedList<Integer>();// help
// me
// to
// solve

for (double i = 0; i < 50; i++) {
num.add((int) i);
if (i % 2 == 0) {
numeven.add((int) i);
} else {
numodd.add((int) i);

}
}

System.out.println(num);
System.out.println("-----------------");
System.out.println(numodd);
System.out.println("-----------------");
System.out.println(numeven);

for (int i =0; i<numeven.size(); i++){

sumoffevenandodd.addAll(numeven.get(i)+ numodd.get(i), null);
}

System.out.println(sumoffevenandodd);
}

}

最佳答案

addAll() 并不是将数字相加。它是将方法参数的所有元素添加到集合本身。

所以,你需要循环,就像

int sum = 0;
for (Integer numberFromList : numeven) {
sum = sum + numberFromList;

或者,如果您有 Java8,则可以使用流:

int sumEven = numeven.stream().sum();

总和,完成。

郑重声明:这里要学习的真正教训是:阅读javadoc。不要假设名为 addAll() 的方法会执行您假设的操作。转到javadoc并告诉自己现实对你的假设有何看法。

但需要澄清的是;因为我也被你的问题迷惑了。

在你的代码中,如果你改变了

sumoffevenandodd.addAll(numeven.get(i)+ numodd.get(i), null);

sumoffevenandodd.add(numeven.get(i)+ numodd.get(i));

它应该也能工作。

长话短说:如果您确实想要一个包含 50 和的列表,那么我的第一段并不能真正帮助您解决问题。但目前还不清楚你想做什么;所以我保留我的答案 - 解决你的逻辑中“错误”的两种可能的解释。

关于java - 2 个数组列表如何求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39436341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com