总结我的ArrayList
项目时遇到问题'公里。
我已将变量doel2
初始化为0
。当我第一次按下我的按钮并在km
字段20
中写字时,我得到20
,所以正确无误。但是,当我在20
字段中填写km
时,我得到的值为100
,但必须为40
。
我进入我的Java控制台:
file is created
file closed
20
file is created
file is closed
40
60
80
100
以下是该方法的代码:
public int NogAfTeLeggenKm(){ // methode om nog af te leggen km's te berekenen TODO
for(Wandeldag w2:wandeldagLijst){
try {
doel2=doel2+Integer.valueOf(w2.getKilometer());
System.out.println(doel2);
}
catch(NullPointerException e){
System.out.println("probeer opnieuw");
}
}
return doel2;
}
以下是我ActionListener
的代码:
public class volgendeWandeldag implements ActionListener {
@Override
public void actionPerformed(ActionEvent e5) {
Wandelaar.save();//save in text file
int km = Integer.parseInt(tekstvakKilometer.getText());
Wandeldag = new Wandeldag(dag,maand,jaar,aantalUur,aantalMinuten,km);
Wandelaar.voegWandeldagToe(Wandeldag);
JOptionPane.showMessageDialog(null,""+Wandelaar);
答案 0 :(得分:0)
如果您包含其余代码(主要方法?)可能会有所帮助。 wandeldagLijst来自哪里?还是Wandelaar对象?它们是如何初始化的。
此外,大多数人都无法真正了解您的代码,因为所有单词都是荷兰语,如果他们无法阅读,他们无法帮助您。
从我能理解你的代码(我可以阅读荷兰语单词)我认为问题在于每次调用NogAfTeLeggenKilometers()时,它都会循环遍历ArrayList中的所有项目,所以也通过那些已经完成的在上次调用方法的列表中。这些项目将被计为两倍,因为'doel2'对于此方法是全局的。结论:'doel2'应该是局部变量。
public int NogAfTeLeggenKm(){ // methode om nog af te leggen km's te berekenen TODO
int res = 0;
for(Wandeldag w2:wandeldagLijst){
try {
res=res+Integer.valueOf(w2.getKilometer());
System.out.println(res);
}
catch(NullPointerException e){
System.out.println("probeer opnieuw");
}
}
return res;
}
在你的主要方法中你应该这样做:
doel2 = NogAfTeLeggenKm();
另外:为什么使用try-catch块为变量赋值?