0

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);
4

1 に答える 1

0

コードの残りの部分も含めると役立つ場合があります (メイン メソッドですか?)。wandeldagLijst はどこから来たのですか? それともワンデラー天体?それらはどのように初期化されますか。

また、すべての単語がオランダ語であるため、ほとんどの人はコードの意味を理解できず、読めない場合は役に立ちません。

私があなたのコードを理解できることから (そしてオランダ語を読むことができます)、問題は、NogAfTeLeggenKilometers() を呼び出すたびに、ArrayList 内のすべての項目をループするため、既にリストにあった項目もループすることだと思います最後にメソッドを呼び出したとき。「doel2」はこのメソッドに対してグローバルであるため、これらの項目は 2 倍にカウントされます。結論:「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 に答える