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