我有一个简单的java方法,我传入自定义对象的ArrayList,并获取它们的值,将它们一起添加并返回它们。我尝试使用foreach循环和传统循环进行迭代,但它只返回0.
public static int samletBeløb(ArrayList<Bruger> brugere) {
int samletBeløb = 0;
for (int i = 0; i < brugere.size(); i++) {
Bruger bruger =brugere.get(i);
int value = bruger.getBeløbGivet();
value += samletBeløb;
}
return samletBeløb;
}
我已经确定,Object值不为null,当我调试程序时,它正确循环,但没有添加任何值。
答案 0 :(得分:3)
这是因为您没有将每个value
添加到samletBeløb
变量。
将您的代码更改为:
public static int samletBeløb(ArrayList<Bruger> brugere) {
int samletBeløb = 0;
for (int i = 0; i < brugere.size(); i++) {
Bruger bruger =brugere.get(i);
int value = bruger.getBeløbGivet();
samletBeløb += value;
}
return samletBeløb;
}
答案 1 :(得分:2)
您没有更改samletBeløb
变量。
将您的代码更改为:
public static int samletBeløb(ArrayList<Bruger> brugere)
{
int samletBeløb = 0;
for (int i = 0; i < brugere.size(); i++) {
samletBeløb += brugere.get(i).getBeløbGivet();
}
return samletBeløb;
}
顺便说一句,使用Java 8 Stream
可以将此方法简化为一行:
public static int samletBeløb(ArrayList<Bruger> brugere)
{
return brugere.stream().mapToInt(Bruger::getBeløbGivet).sum();
}
答案 2 :(得分:2)
这是因为你正在加起来但是返回samletBeløbalways,它被初始化为0所以我总是给你一个0;试试这段代码:
public static int samletBeløb(ArrayList<Bruger> brugere) {
int value = 0;
for (int i = 0; i < brugere.size(); i++) {
Bruger bruger =brugere.get(i);
value += brugere.get(i).getBeløbGivet();
}
return value;
}