Wie summieren ich einen Stack in Java?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hallo,

wenn man schon deinen Code als Grundlage benutzt, dann wohl eher so:

public Komplex sum_stack(){
    Komplex sum_stack = new Komplex();

    for (int i = 0; i < this.max_elem; i++) {  
        sum_stack = sum_stack.add(this.pop());
    }

    return sum_stack;      
}

Dir muss aber klar sein, dass dein Stack danach leer ist. "this.pop" wird, sofern der Stack standardmäßig implementiert wurde, das jeweilige Element vom Stack entfernen.

thix.max_elem nehme ich mal an, ist die Anzahl der Elemente auf dem Stack.

Ich würde eine while-Schleife vorziehen

while (this.hasMoreElements())

Ansonsten macht es wenig Sinn die Schleife bei -1 beginnen zu lassen. Ja, der Index selbst wird nicht benutzt, aber dann müsstest Du genauso die Bedingung anpassen ( i< this.max_elem -1). Das macht den Code nur schwieriger zu verstehen.

Evtl. schreibst Du auch eine Methode, die den Stack selbst nicht verändert. Kommt natürlich konkret darauf an, was Du benötigst.

Für mich gehören Rechenoperationen nicht in die Stack-Klasse. Das Rechnen sollte in einer gesonderten Berechnungsklasse erfolgen. Evtl. wäre sogar das Command-Pattern angebracht um verschiedenste Rechenoperationen auf Stacks abzubilden.

Ansonsten wird

 sum_stack + this.pop()

Natürlich nicht funktionieren. sum_stack ist vom Typ Komplex und es gibt in Java keine Operatorüberladung. Daher funktioniert das "+" nicht und muss durch eine geeignete Methode der Klasse Komplex abgebildet werden.

Gruß

Wie summieren ich einen Stack in Java?

Du erstellst eine Variable, in der das Ergebnis gespeichert wird.

Du nimmst ein Element vom Stack und rechnest es auf die Variable. Das wiederholst du solange bis der Stack leer ist.

Ich sehe da nun keine Schwierigkeit.

Woher ich das weiß:Berufserfahrung