Beispiel eines mit Java hergestellten Verkaufsautomaten (Klassifizierung)

Der Verkaufsautomat, den ich das letzte Mal geschrieben habe: https://qiita.com/TakumiKondo/items/e93aa60031e2fe09d969 Wurde in Klassen eingeteilt.

Items.java


package vm;
 
import java.util.HashMap;
import java.util.Map;
 
public class Items {
    private Map<String, Integer> items; //Produktliste
    private Map<String, Integer> availablePurchases; //Artikel, die gekauft werden können
 
    //Konstruktor (Initialisierung der Produktliste)
    Items() {
        this.items = new HashMap<String, Integer>();
        items.put("Cola", 100);
        items.put("Orangensaft", 120);
        items.put("Wasser", 80);
    }
 
    //Holen Sie sich den Mindestkaufpreis
    int minPrice() {
        int minPrice = 0;
        int loopCount = 0;
        for (String itemKey : items.keySet()) {
            minPrice = validMinPrice(loopCount, minPrice, itemPrice(itemKey));
            loopCount++;
        }
        return minPrice;
    }
 
    //Beurteilung des Mindestkaufbetrags
    int validMinPrice(int loopCount, int minPrice, int price) {
        if (loopCount == 0 || minPrice > price) {
            minPrice = price;
        }
        return minPrice;
    }
 
    //Produktpreis
    private int itemPrice(String itemKey) {
        return items.get(itemKey);
    }
 
    //Anzahl der Artikel, die gekauft werden können
    private int availablePurchasePrice(String itemKey) {
        return availablePurchases.get(itemKey);
    }
 
    //Holen Sie sich eine Liste der verfügbaren Produkte
    void createAvailablePurchases(int deposit) {
        availablePurchases = new HashMap<String, Integer>();
        for (String itemKey : items.keySet()) {
            addAvailablePurchase(deposit, itemKey);
        }
    }
 
    //Ergänzung der verfügbaren Produktliste
    private void addAvailablePurchase(int deposit, String itemKey) {
        if (deposit >= items.get(itemKey)) {
            availablePurchases.put(itemKey, items.get(itemKey));
        }
    }
 
    //Anzeige der verfügbaren Produkte
    void showAvailablePurchase() {
        for (String itemKey : availablePurchases.keySet()) {
            System.out.println(itemKey + ":" + items.get(itemKey) + "Kreis");
        }
    }
 
    //Beurteilung, ob es sich um ein käufliches Produkt handelt
    boolean isAvailablePurchase(String itemName, Deposit deposit) {
        return availablePurchases.containsKey(itemName);
    }
 
    //Verkaufspreis
    int saleAmount(String itemName) {
        return availablePurchasePrice(itemName);
    }
}

Deposit.java


package vm;
 
public class Deposit {
    private int deposit; //Einzahlungsbetrag
 
    //Konstruktor (Anfangswert 0 Yen)
    Deposit() {
        deposit = 0;
    }
 
    //Zahlung
    void deposit(int amount) {
        deposit = deposit + amount;
    }
 
    //Aktueller Einzahlungsbetrag
    int amount() {
        return this.deposit;
    }
 
    //Abrechnung
    void charge(int amount) {
        int charge = this.deposit - amount;
        this.deposit = charge;
    }
}

VendingMachine.java


package vm;
 
public class VendingMachine {
    private Items items; //Produkt
    private Deposit deposit; //Einzahlungsbetrag
 
    //Konstrukteur
    VendingMachine() {
        items = new Items();
        deposit = new Deposit();
    }
 
    //Zahlung
    void deposit(int amount) {
        deposit.deposit(amount);
    }
 
    //Stellen Sie fest, ob eine Anzahlung über dem Produkt mit dem niedrigsten Preis liegt
    boolean hasMinDeposit() {
        if (deposit.amount() < items.minPrice()) {
            return false;
        }
        return true;
    }
 
    //Verfügbare Produkte anzeigen
    void showAvailablePurchases() {
        items.createAvailablePurchases(deposit.amount());
        items.showAvailablePurchase();
    }
 
    //Stellen Sie fest, ob das Produkt zum Kauf angeboten wird
    boolean isAvailablePurchases(String itemName) {
        return items.isAvailablePurchase(itemName, deposit);
    }
 
    //Gekaufte Artikel anzeigen
    void selectItem(String itemName) {
        System.out.println(itemName + "ist!");
    }
 
    //Abrechnung
    void charge(String itemName) {
        int saleAmount = items.saleAmount(itemName);
        deposit.charge(saleAmount);
        System.out.println("Veränderung ist" + deposit.amount() + "Es ist ein Kreis.");
    }
}

Main.java


package vm;
 
import java.util.Scanner;
 
/**
 *Verkaufsautomat (Stufe 6) Erstellen einer Verkaufsautomatenklasse
 */
public class Main {
    //Hauptlogik
    public static void main(String[] args) {
        //① Produktinitialisierung
        VendingMachine vendingMachine = new VendingMachine();
 
        //Zusätzliche Kaution für den Mindestkaufbetrag
        Scanner scanner = new Scanner(System.in);
        do {
            //② Kaution
            System.out.println("Bitte geben Sie das Geld ein.");
            int amount = scanner.nextInt();
            vendingMachine.deposit(amount);
 
            //③ Betragsprüfung (Mindestkaufbetrag)
        } while (!vendingMachine.hasMinDeposit());
 
        //④ Verfügbare Produkte anzeigen
        System.out.println("");
        System.out.println("Es ist ein Produkt, das gekauft werden kann.");
        vendingMachine.showAvailablePurchases();
 
        //⑤ Wählen Sie ein Produkt aus
        String itemName;
        do {
            System.out.println("");
            System.out.println("Bitte geben Sie den Produktnamen ein.");
            itemName = scanner.next();
        } while (!vendingMachine.isAvailablePurchases(itemName));
        vendingMachine.selectItem(itemName);
        scanner.close();
 
        //⑥ Abrechnungsfunktion
        vendingMachine.charge(itemName);
    }
 
}

Recommended Posts

Beispiel eines mit Java hergestellten Verkaufsautomaten (Klassifizierung)
Beispielautomat mit Java
Verkaufsautomat mit Java (domänengesteuert)
Ich habe ein Roulette in Java gemacht.
Ein einfaches Beispiel für Rückrufe in Java
Ich habe eine Anmerkung in Java gemacht.
Altersschätzspiel mit Java gemacht
Beispiel zum Entpacken einer gz-Datei in Java
Überarbeitetes GUI-Tool, das 2016 mit Java8 + JavaFX erstellt wurde
Partisierung in Java
[Java] Generics-Beispiel
Java-Beispielcode 02
Java-Beispielcode 03
Selenprobe (Java)
Änderungen in Java 11
Java GUI Beispiel
Janken in Java
Java-Beispielcode 04
Ich habe ein Janken-Spiel in Java (CLI) gemacht.
Java-Beispielcode 01
Umfangsrate in Java
FizzBuzz in Java
Ich habe ein einfaches Berechnungsproblemspiel in Java gemacht
Beispielcode zum Konvertieren von List in List <String> in Java Stream
[Für Anfänger] Mindestbeispiel für die Anzeige von RecyclerView in Java
Java State Machine Auto
Lesen Sie JSON in Java
Interpreter-Implementierung durch Java
Machen Sie einen Blackjack mit Java
Janken App in Java
Einschränkungsprogrammierung in Java
Setzen Sie Java8 in Centos7
NVL-artiger Typ in Java
Verbinden Sie Arrays in Java
"Hallo Welt" in Java
Kommentare in der Java-Quelle
Azure funktioniert in Java
Formatieren Sie XML in Java
Einfache HTML-Spezialchars in Java
Boyer-Moore-Implementierung in Java
Hallo Welt in Java
Verwenden Sie OpenCV mit Java
Typbestimmung in Java
Verschiedene Threads in Java
Implementierung der Heap-Sortierung (in Java)
Zabbix API in Java
ASCII-Kunst in Java
Listen in Java vergleichen
POST JSON in Java
Fehler in Java ausdrücken
Erstellen Sie JSON in Java
[Java] logback slf4j Beispiel
Datumsmanipulation in Java 8
Was ist neu in Java 8?
Verwenden Sie PreparedStatement in Java
Was ist neu in Java 9,10,11
Parallele Ausführung in Java
[Anfänger] Ich habe ein Programm zum Verkauf von Kuchen in Java erstellt