Hi !
Ich soll als Projekt einen Automaten erstellen in den man beliebig viele Sorten hinzufügen kann. Mein Vorschlag ist unten angegeben. Er funktioniert auch solange man nur eine Sorte hinzufügt. Wenn man 2 Sorten hinzufügt passiert es allerdings das man sich die ausgewählte Sorte so oft man will wieder herrausgegeben kann obwohl diese längst nicht mehr enthalten sein müsste. Es muss also irgend ein Fehler in der dispense() Methode vorliegen. Danke schon mal für die Hilfe!
Ich soll als Projekt einen Automaten erstellen in den man beliebig viele Sorten hinzufügen kann. Mein Vorschlag ist unten angegeben. Er funktioniert auch solange man nur eine Sorte hinzufügt. Wenn man 2 Sorten hinzufügt passiert es allerdings das man sich die ausgewählte Sorte so oft man will wieder herrausgegeben kann obwohl diese längst nicht mehr enthalten sein müsste. Es muss also irgend ein Fehler in der dispense() Methode vorliegen. Danke schon mal für die Hilfe!
Code:
package prog2.project2;
import java.util.ArrayList;
/**
*
* Diese Klasse implementiert das Interface {@link IChocolateVendingMachine}.
* </p>
*
*
* In BlueJ können Sie über den Menüpunkt "Tools - Project Documentation" eine HTML-Dokumentation erzeugen. Dadurch erhalten Sie
* Zugriff auf die von uns vorgegebene Spezifikation dieser Klasse. Weiter können Sie direkt im BlueJ Editor auf die Dokumentation
* zurückgreifen. Wählen Sie dazu in der Toolbar des Editors "Interface" statt "Implementation" aus. Weitere Informationen finden
* Sie im Kapitel "10.4 Generating documentation" des offiziellen BlueJ Tutorials.
* </p>
*/
public class ChocolateVendingMachine implements IChocolateVendingMachine {
/**
* Konstruiert einen neuen Verkaufsautomaten. Der Automat ist leer (beinhaltet keine Produkte) und die Summe der Preise der
* bisher verkauften Artikel ist 0.
*/
private int balance;
private int total;
private ArrayList <IChocolate> Inhalt = new ArrayList <IChocolate> ();
private IChocolate selection;
public ChocolateVendingMachine() {
balance = 0;
total = 0;
}
public void clearBalance() {
System.out.println ("Rückgeld: " + balance);
balance = 0;
}
public IChocolate dispense() {
for (IChocolate item : Inhalt){
if(selection == null){
System.out.println(NO_ITEM_SELECTED);
return null;}
if(item.getPrice()<= balance){
System.out.println("Folgendes Produkt wurde gekauft: " + selection);
balance -= item.getPrice();
total += item.getPrice();
Inhalt.remove(selection);
return selection;
}
else
System.out.println(NOT_ENOUGH_MONEY);
}
if (Inhalt.size() == 0)
System.out.println("Der Automat ist leer.");
return null;
}
public int getBalance() {
return balance;
}
public int getNumberOfItems() {
return Inhalt.size();
}
public int getTotal() {
return total;
}
public int getTotalValueOfProducts() {
int TotalValueOfProducts = 0;
for (IChocolate item : Inhalt){
TotalValueOfProducts += item.getPrice();
}
return TotalValueOfProducts;
}
public void insertMoney(int money) {
if(money > 0) {
balance += money;
}
else {
System.out.println(NEGATIVE_MONEY);
}
}
public boolean isEmpty() {
if (Inhalt.size() == 0)
return true;
else
return false;
}
public void printInventory() {
if (Inhalt.size() == 0)
System.out.println("Der Automat ist leer.");
else
System.out.println("Folgende Produkte sind verfügbar:");
for (IChocolate item : Inhalt)
{
System.out.println("\r" + item.toString());
}
}
public void resetTotal() {
total = 0;
}
public void restock(IChocolate item) {
Inhalt.add(item);
}
public void select(String productDescription) {
selection = null;
for (IChocolate item : Inhalt){
if(item.getDescription() == productDescription ){
selection = item;}
}
}
}