ArrayList元素未正确汇总

时间:2013-04-14 10:28:50

标签: java arraylist sum

总结我的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);

1 个答案:

答案 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块为变量赋值?