0

我有一个问题来总结我的ArrayList物品的公里数。

我已将变量初始化doel20. 当我第一次按下按钮并在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);
4

1 回答 1

0

如果您也包含其余代码(您的主要方法?),它可能会有所帮助。wandeldagLijst 来自哪里?还是万德拉天体?它们是如何初始化的。

此外,大多数人无法真正理解您的代码,因为所有单词都是荷兰语,如果他们看不懂,他们就无法帮助您。

根据我对您的代码的理解(我可以阅读荷兰语单词),我认为问题在于每次调用 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 块来为变量赋值?

于 2013-04-14T10:59:26.123 回答