Collections Methode in der Methode aufrufen

Diskutiere Methode in der Methode aufrufen im Java Basics - Anfänger-Themen Bereich.
V

ve987

Hallo zusammen,

in meiner Methode geldscheinHinzufügen() füge ich die Geldscheine der ArrayList hinzu.

Nun soll auch gleichzeitig ausgegeben werden, welche Geldscheine sich in der Liste befinden -> eine ausgabe() Methode wird aufgerufen.

Die Ausgabe stimmt aber nicht. Gleiche Geldscheine werden dreimal oder viermal ausgegeben.

Es funktioniert aber, wenn ich die ausgabe() Methode seperat aufrufe, ohne sie in die geldscheinHinzufügen() Methode reinzumachen.

Kann mir bitte jemand erklären warum?

Code:
import java.util.*;

public class GeldscheinMain {

    public static void main(String[] args) {

        Automat automat = new Automat();

        automat.geldscheinHinzufügen(new Geldschein(987, 30));
        automat.geldscheinHinzufügen(new Geldschein(123, 100));
        automat.geldscheinHinzufügen(new Geldschein(234, 20));
        automat.geldscheinHinzufügen(new Geldschein(456, 50));
        

        automat.sortieren();
        //automat.ausgabe();
        automat.info();

    }

}
Code:
import java.util.*;

public class Automat {

    List<Geldschein> list = new ArrayList<Geldschein>();

    public void geldscheinHinzufügen(Geldschein g) {
        list.add(g);

        ausgabe();
    }

    public void ausgabe() {

        for (Geldschein geldschein : list) {

            System.out.println(geldschein);
        }
    }

    public void info() {

        int summe = 0;

        for (Geldschein geldschein : list) {
            summe = summe + geldschein.getWert();
        }

        System.out.println("Stück" + " " + list.size() + " Summe" + " " + summe + " EUR");
    }

    public void sortieren() {
        Collections.sort(list, (g1, g2) -> g1.getNummer() - g2.getNummer());
    }

}
Code:
import java.util.*;


public class Geldschein {

    private int nummer;
    private int wert;
    

    public Geldschein(int nummer, int wert) {
        super();
        this.nummer = nummer;
        this.wert = wert;
    }
    
    
    public int getNummer() {
        return nummer;
    }
    public void setNummer(int nummer) {
        this.nummer = nummer;
    }
    public int getWert() {
        return wert;
    }
    public void setWert(int wert) {
        this.wert = wert;
    }



    @Override
    public String toString() {
        return "" + "Nr."    + " " + getNummer() + "," + " Wert"  + " " + getWert() + " EUR";
    }
    
}
 
H

httpdigest

Naja... selbstverständlich. Du rufst ja dann insgesamt vier Mal ausgabe() auf - genauso wie du vier Mal geldscheinHinzufügen() aufrufst. Jedesmal, nachdem du ein Element der Liste hinzugefügt hast, wird innerhalb von geldscheinHinzufügen() durch Aufruf von ausgabe() ausgegeben, was aktuell in der Liste ist.
 
Thema: 

Methode in der Methode aufrufen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben