# Münzen sortieren



## celi (26. Jan 2021)

Hallo!
Ich soll als Hausaufgabe folgende Aufgabe lösen: Ein Stapel besteht aus folgenden Münzsorten: 10, 20, 50 Cent, 1- und 2-Euro-Münzen. Erzeugen Sie einen Stapel mit 20 verschiedenen Münzen. Sortieren Sie das Geld nach Münzart und geben Sie an, wie viel jeder Stapel wert ist und wie viele Münzen auf jedem Stapel liegen.

Im Code könnt ihr sehen, was ich bisher gemacht habe. 
Ich verzweifle jedoch irgendwie total an der Sache mit dem Sortieren und komme einfach nicht weiter. Ich habe mich jetzt einige Stunden lang durch das Internet, wie auch mein Buch geforstet und finde irgendwie einfach keinen Ansatz, der zu funktionieren scheint. Somit dachte ich, frage ich einfach Mal hier. Ich würde mich sehr über eine kleine Hilfe freuen! LG


```
public class Muenzenstapel
{
    // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
    private Stack<Integer> gemischterStapel;
    private Stack<Integer> cent10, cent20, cent50, euro1, euro2;
    private int zaehler;
    
    /**
     * Konstruktor für Objekte der Klasse Muenzenstapel
     */
    public Muenzenstapel()
    {
        zaehler=0;
        gemischterStapel = new Stack<Integer>();
        cent10 = new Stack<Integer>();
        cent20 = new Stack<Integer>();
        cent50 = new Stack<Integer>();
        euro1 = new Stack<Integer>();
        euro2 = new Stack<Integer>();
        
    }

    public void muenzenStapeln (int pMuenze)
    {
        if (zaehler < 20)
        {
           gemischterStapel.push(pMuenze);
           zaehler++;
          
        }
        else
        {
            System.out.println("Stapel ist voll");
        }
    }
    
    
    public void sortieren ()
    {
      
    }
}
```


----------



## MoxxiManagarm (26. Jan 2021)

Ich würde es mit einem Enum machen, sowas in der Art


```
enum Coin {
    CENT1(1),
    CENT2(2),
    CENT5(5),
    CENT10(10),
    CENT20(20),
    CENT50(50),
    EURO1(100),
    EURO2(200);
    
    private int valueInCent;
    
    private Coin(int valueInCent) {
        this.valueInCent = valueInCent;
    }
}
```

Die Enum values haben eine ordinale, welche du zufällig für den gemischten Stapel bedienen kannst, auch könntest du mit der ordinalen eine Stapelzuordnung machen.


----------



## Oneixee5 (26. Jan 2021)

Ist es notwendig, dass in deinem Beispiel die Klasse Stack verwendet wird? Stack ist eine Datenstruktur, die nach dem _LIFO-Prinzip_ (last-in-first-out) arbeitet. Die Elemente werden am vorderen Ende der Liste eingefügt und von dort auch wieder entnommen. Das heißt, die zuletzt eingefügten Elemente werden zuerst entnommen und die zuerst eingefügten zuletzt. Eine Sortierung würde diese Prinzip durchbrechen. Somit wäre ein Stack die falsche Datenstruktur.


----------



## celi (26. Jan 2021)

Oneixee5 hat gesagt.:


> Ist es notwendig, dass in deinem Beispiel die Klasse Stack verwendet wird? Stack ist eine Datenstruktur, die nach dem _LIFO-Prinzip_ (last-in-first-out) arbeitet. Die Elemente werden am vorderen Ende der Liste eingefügt und von dort auch wieder entnommen. Das heißt, die zuletzt eingefügten Elemente werden zuerst entnommen und die zuerst eingefügten zuletzt. Eine Sortierung würde diese Prinzip durchbrechen. Somit wäre ein Stack die falsche Datenstruktur.


Meine Lehrerin hat vorgegeben, die Klasse Stack zu benutzen. Es sind aber auch Begriffe wie switch-case-Verzweigung, push, pop, Queue und List gefallen. Ich weiß ehrlich gesagt nicht so genau, was das alles bedeutet.. Würde denn irgendwas davon mehr Sinn machen?


----------



## Oneixee5 (26. Jan 2021)

Sortieren ist in deinem Fall ganz einfach, da die Klasse Stack das Interface Collection erweitert,  sieh dir: Collections.sort(...); an.





						Openbooks. Rheinwerk-Bücher kostenlos online lesen. Ein Service des Rheinwerk Verlags
					






					openbook.rheinwerk-verlag.de


----------

