Échantillon de distributeur automatique fabriqué avec Java (classification)

Le distributeur automatique que j'ai écrit la dernière fois: https://qiita.com/TakumiKondo/items/e93aa60031e2fe09d969 A été classé en classes.

Items.java


package vm;
 
import java.util.HashMap;
import java.util.Map;
 
public class Items {
    private Map<String, Integer> items; //Liste de produits
    private Map<String, Integer> availablePurchases; //Articles pouvant être achetés
 
    //Constructeur (initialisation de la liste de produits)
    Items() {
        this.items = new HashMap<String, Integer>();
        items.put("Cola", 100);
        items.put("du jus d'orange", 120);
        items.put("eau", 80);
    }
 
    //Obtenez le prix d'achat minimum
    int minPrice() {
        int minPrice = 0;
        int loopCount = 0;
        for (String itemKey : items.keySet()) {
            minPrice = validMinPrice(loopCount, minPrice, itemPrice(itemKey));
            loopCount++;
        }
        return minPrice;
    }
 
    //Jugement du montant minimum d'achat
    int validMinPrice(int loopCount, int minPrice, int price) {
        if (loopCount == 0 || minPrice > price) {
            minPrice = price;
        }
        return minPrice;
    }
 
    //Prix du produit
    private int itemPrice(String itemKey) {
        return items.get(itemKey);
    }
 
    //Quantité d'articles pouvant être achetés
    private int availablePurchasePrice(String itemKey) {
        return availablePurchases.get(itemKey);
    }
 
    //Obtenez une liste des produits disponibles
    void createAvailablePurchases(int deposit) {
        availablePurchases = new HashMap<String, Integer>();
        for (String itemKey : items.keySet()) {
            addAvailablePurchase(deposit, itemKey);
        }
    }
 
    //Ajout de la liste de produits disponibles
    private void addAvailablePurchase(int deposit, String itemKey) {
        if (deposit >= items.get(itemKey)) {
            availablePurchases.put(itemKey, items.get(itemKey));
        }
    }
 
    //Affichage des produits disponibles
    void showAvailablePurchase() {
        for (String itemKey : availablePurchases.keySet()) {
            System.out.println(itemKey + ":" + items.get(itemKey) + "Cercle");
        }
    }
 
    //Jugement quant à savoir s'il s'agit d'un produit achetable
    boolean isAvailablePurchase(String itemName, Deposit deposit) {
        return availablePurchases.containsKey(itemName);
    }
 
    //Prix de vente
    int saleAmount(String itemName) {
        return availablePurchasePrice(itemName);
    }
}

Deposit.java


package vm;
 
public class Deposit {
    private int deposit; //Montant du dépôt
 
    //Constructeur (valeur initiale 0 yen)
    Deposit() {
        deposit = 0;
    }
 
    //Paiement
    void deposit(int amount) {
        deposit = deposit + amount;
    }
 
    //Montant actuel du dépôt
    int amount() {
        return this.deposit;
    }
 
    //Facturation
    void charge(int amount) {
        int charge = this.deposit - amount;
        this.deposit = charge;
    }
}

VendingMachine.java


package vm;
 
public class VendingMachine {
    private Items items; //Produit
    private Deposit deposit; //Montant du dépôt
 
    //constructeur
    VendingMachine() {
        items = new Items();
        deposit = new Deposit();
    }
 
    //Paiement
    void deposit(int amount) {
        deposit.deposit(amount);
    }
 
    //Déterminez s'il y a un acompte au-dessus du produit le moins cher
    boolean hasMinDeposit() {
        if (deposit.amount() < items.minPrice()) {
            return false;
        }
        return true;
    }
 
    //Afficher les produits disponibles
    void showAvailablePurchases() {
        items.createAvailablePurchases(deposit.amount());
        items.showAvailablePurchase();
    }
 
    //Déterminez si le produit est disponible à l'achat
    boolean isAvailablePurchases(String itemName) {
        return items.isAvailablePurchase(itemName, deposit);
    }
 
    //Afficher les articles achetés
    void selectItem(String itemName) {
        System.out.println(itemName + "est!");
    }
 
    //Facturation
    void charge(String itemName) {
        int saleAmount = items.saleAmount(itemName);
        deposit.charge(saleAmount);
        System.out.println("Le changement est" + deposit.amount() + "C'est un cercle.");
    }
}

Main.java


package vm;
 
import java.util.Scanner;
 
/**
 *Distributeur automatique (niveau 6) Création d'une classe de distributeur automatique
 */
public class Main {
    //Logique principale
    public static void main(String[] args) {
        //① Initialisation du produit
        VendingMachine vendingMachine = new VendingMachine();
 
        //Dépôt supplémentaire pour le montant minimum d'achat
        Scanner scanner = new Scanner(System.in);
        do {
            //② Dépôt
            System.out.println("Veuillez mettre l'argent.");
            int amount = scanner.nextInt();
            vendingMachine.deposit(amount);
 
            //③ Chèque de montant (montant minimum d'achat)
        } while (!vendingMachine.hasMinDeposit());
 
        //④ Afficher les produits disponibles
        System.out.println("");
        System.out.println("C'est un produit qui peut être acheté.");
        vendingMachine.showAvailablePurchases();
 
        //⑤ Sélectionnez un produit
        String itemName;
        do {
            System.out.println("");
            System.out.println("Veuillez saisir le nom du produit.");
            itemName = scanner.next();
        } while (!vendingMachine.isAvailablePurchases(itemName));
        vendingMachine.selectItem(itemName);
        scanner.close();
 
        //⑥ Fonction de facturation
        vendingMachine.charge(itemName);
    }
 
}

Recommended Posts

Échantillon de distributeur automatique fabriqué avec Java (classification)
Distributeur automatique d'échantillons fabriqué avec Java
Distributeur automatique fabriqué avec Java (piloté par domaine)
J'ai fait une roulette à Java.
Un exemple simple de rappels en Java
J'ai fait une annotation en Java.
Jeu de devinettes d'âge réalisé avec Java
Exemple pour décompresser le fichier gz en Java
Outil GUI refactorisé réalisé avec Java8 + JavaFX en 2016
Partition en Java
[Java] Exemple de génériques
Exemple de code Java 02
Exemple de code Java 03
Échantillon de sélénium (Java)
Changements dans Java 11
Exemple d'interface graphique Java
Janken à Java
Exemple de code Java 04
J'ai créé un jeu Janken en Java (CLI)
Exemple de code Java 01
Taux circonférentiel à Java
FizzBuzz en Java
J'ai fait un jeu de problèmes de calcul simple en Java
Exemple de code pour convertir List en List <String> dans Java Stream
[Pour les débutants] Exemple minimum pour afficher RecyclerView en Java
voiture de machine d'état de Java
Lire JSON en Java
Implémentation de l'interpréteur par Java
Faites un blackjack avec Java
Application Janken en Java
Programmation par contraintes en Java
Mettez java8 dans centos7
NVL-ish guy en Java
Joindre des tableaux en Java
"Hello World" en Java
Commentaires dans la source Java
Fonctions Azure en Java
Formater XML en Java
Simple htmlspecialchars en Java
Implémentation Boyer-Moore en Java
Hello World en Java
Utiliser OpenCV avec Java
Détermination de type en Java
Divers threads en java
Implémentation du tri de tas (en java)
API Zabbix en Java
Art ASCII à Java
Comparer des listes en Java
POST JSON en Java
Exprimer l'échec en Java
Créer JSON en Java
[Java] exemple de logback slf4j
Manipulation de la date dans Java 8
Nouveautés de Java 8
Utiliser PreparedStatement en Java
Nouveautés de Java 9,10,11
Exécution parallèle en Java
[Débutant] J'ai créé un programme pour vendre des gâteaux en Java