Verkaufsautomat Enumerations HashTable

arti28

Mitglied
Hi Leute,
ich hab da mal ein kleines Problem, an dem ich schon seit einer Weile festhänge.

Folgende Aufgabenstellung:
Mit einem Verkaufsautomaten sollen verschiedene Produkte verkauft werden. Nachdem der Kunde mehrere Produkte ausgewählt hat, berechnet der Automat die Summe der Einzelpreise. Dann kommt es zur Bezahlung. Der Benutzer wirft eine bestimmte Anzahl von Münzen ein. Der Automat entscheidet dann ob genug gezahlt wurde oder nicht.

Der Automat akzeptiert die folgenden Münzen: 1Euro, 2Euro, 50Cent, 20Cent, 10Cent, 1Cent, 2Cent, 5Cent. Intern verfügt der Automat über einen Speicher, für solche Münzen......

A) Schreiben Sie eine Enumeration mit dem Namen Münzart. Jede Konstante dieser Enumeration soll für eine der o.g. Münzen gelten. Jeder Konstanten soll ein Wert in Cent zugewiesen werden. Realisieren Sie dies mit einem geeignetem Objektatribut

B) Schreiben Sie eine Klasse mit dem Namen Münzen. Jede Instanz dieser Klasse Münzen steht für mehrere Münzen, die unterschiedliche Münzenarten haben können. Eine Instanz der Klasse Münzen speichert in einem Objektatribut zu jeder Münzart eine Anzahl. Verwenden Sie dazu die Generic-Klasse HashTable <a,b>.

</a,b>
Erläuterung: Eine Instanz der Klasse Münzen kann dazu verwendet werden, den Bezahlvorgang des Kunden zu beschreiben. Eine solche Instanz kann jedoch auch dazu verwendet werden, den Stand des im Automaten eingebauten Münzspeichers zu beschreiben. eine Solche Instanz kann schließlich auch dazu verwendet werden, die Wechselgeld-Zahlung zu beschreiben.

C) Schreiben Sie zur Klasse Münzen einen Default-Konstruktor, der eine leere Münzenmege erzeugt.

D) Schreiben Sie zur Klasse MÜnzen eine Objektmethode setMünze, mit der man die Anzahl einer der bestimmten Münzart auf einen bestimmten Wert setzen kann. Münzart und Anzahl sollen Parameter der Methode sein.

E) Schreiben Sie zur Klasse MÜnzen eine Objektmethode getMünze mit der man zu einer Münzart deren Anzahl abfragen kann. Die Methode kann einen Parameter vom Typ Münzart und einen Rückgabewert vom Typ Int haben, der die Anzahl der Münzen dieses Typs zurück gibt.

F) Schreiben Sie zur Klasse Münzen eine toString()-Methode, die den Inhalt deines Münzen-Objekts gemäß den nachfolgenden Schema in einen String verwandelt.
2 Euro - 1 Stück
50 Cent - 3 Stück
1 Cent - 5 Stück​


Hier das was ich bis jetzt erreicht habe. Mit der HashTable bin ich überfordert und ich weiß nicht wie das implementiert werden kann und gemeint ist.
Code:
public enum MuenzArt {
    
    EinCent(1),
    ZweiCent(2),
    FuenfCent(5),
    ZehnCent(10),
    ZwanzigCent(20),
    FuenfzigCent(50),
    
    EinEuro(100),
    ZweiEuro(200);
    final int wertInCent;
    
    private MuenzArt (int wertInCent){
        this.wertInCent = wertInCent;
    }
    
    public int _getCent(){
        return wertInCent;
    }
}

Code:
import java.util.Vector;

public class Muenze {
    
    Vector <muenzart> m;
    
    int münzenErhalten = m.size();
    
    public Muenze (){
        m = new Vector <muenzart>();
    }
    
    //Münze einwerfen
    public void muenzeEinwerfen (MuenzArt coin){
        m.add(coin);        
    }
    
    
    //Münzspeicher
    
    
    //Rueckgeld
}
</muenzart></muenzart>
 
Nabend,

Die Münzarten schauen schon mal ganz gut aus.
Versuch mal die Java docs zu verwenden. Zur Hashtable steht da in der ersten Zeile:

This class implements a hash table, which maps keys to values. Any non-null object can be used as a key or as a value.
Kannst ja nochmal nachlesen wenn du willst:
Hashtable (Java Platform SE 7 )

Ich weiß ja nicht ob du zum Beispiel eine HashMap kennst, was eine HashTable und auch eine HashMap machen ist folgendes:
Du hast einen "Schlüsselwert" und einen dazu passenden "Wert". Die HashTable speichert einfach nur Paare ab, d.h. wenn du als Key die Münzart EinEuro setzt dann könntest du als Value die Anzahl der Ein-Euro-Münzen setzen die vorliegen.

Ich habe dir mal ein kleines Codebeispiel wie das funktionieren könnte, jedoch verwende ich statt der Münzart einfach einen String für den namen, zum Beispiel "EinEuro". Musst dann nur noch versuchen das für dich passend umzuschreiben.

Java:
	Hashtable<String, Integer> table = new Hashtable<String, Integer>();
	
	table.put("EinEuro", 5);
	System.out.println(table.get("EinEuro"));

mfg Major
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben