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