Java自定义对象ArrayList累加方法异常:始终返回0
问题分析与解决方案
嘿,我一下子就发现你代码里的问题啦!你之所以始终返回0,是因为累加的赋值方向搞反了——你现在是把总和变量加到临时的value里,根本没更新要返回的samletBeløb变量,它自然一直保持初始值0啦!
原代码的问题点
看你这段循环代码:
for (int i = 0; i < brugere.size(); i++) { Bruger bruger = brugere.get(i); int value = bruger.getBeløbGivet(); value += samletBeløb; // 这里错了!只是修改了局部变量value,samletBeløb没变化 }
你每次拿到beløbGivet的值存在value里后,把samletBeløb加到value上,但这个操作完全和要返回的samletBeløb无关,它一直是初始的0,最后返回当然就是0了。
修正后的传统循环版本
把赋值方向反过来,把当前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; }
更简洁的foreach循环版本
既然你也想尝试foreach循环,给你写个更清爽的版本:
public static int samletBeløb(ArrayList<Bruger> brugere) { int samletBeløb = 0; for (Bruger bruger : brugere) { samletBeløb += bruger.getBeløbGivet(); } return samletBeløb; }
这样一来,每次循环都会把当前Bruger对象的beløbGivet值累加到总和变量里,最后返回的就是正确的累加结果了~
内容的提问来源于stack exchange,提问作者kristheman
相关产品推荐
相关产品推荐

