当前位置:网站首页>Conception de plusieurs classes

Conception de plusieurs classes

2022-06-27 08:46:00 10 000 volts petit soleil

//package ListTest;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) {
    
        //Créer une maison de boissons,Qu'est - ce qu'il y a dans cette maison de boissons
        BeverageHouse house = new BeverageHouse(ExamTools.data());
        System.out.print("Entrée:");
        //Données uniques du point de réception,Et décomposer plusieurs paires d'entiers,Format voir la description du sujet
        List<int[]> codeAndAmounts = ExamTools.inputCodesAndAmounts();
        //Le système traite successivement les demandes de commande de boissons
        for (int[] codeAndAmount : codeAndAmounts)
            house.order(codeAndAmount[0], codeAndAmount[1]);
        //Règlement
        house.settle();
    }
}
/** *  La Maison des boissons  * 1 1,2 8,6 3,6 -2,1 1, 2 -100 */
class BeverageHouse {
    
    private final Cart cart = new Cart();
    private final BeverageList beverageList;

    public BeverageHouse(Beverage[] beverages) {
    
        beverageList = new BeverageList(beverages);
    }
    /** *  Commande une boisson , Si la boisson commandée n'existe pas ,Le programme ne fait rien * @param beverageCode  Code de la boisson  * @param amount PointamountUn verre.,Peut être négatif */
    public void order(int beverageCode, int amount) {
    
        //TODO Code complet
        Beverage beverage = beverageList.getBeverageByCode(beverageCode);
        if (beverage != null) {
    
            cart.adjust(beverage, amount);
        }
    }
    /** *  Règlement simulé , Exporter la quantité et le prix total des boissons achetées  */
    public void settle() {
    
        System.out.printf("Montant total:%.2f  Nombre total de tasses :%d",cart.getTotalPrice(),cart.getTotalAmount());
    }
}
/** * Panier */
class Cart {
    

    /** *  .Augmenter ou diminuer la quantité d'une boisson , Si le nombre de tasses qui causeront ce point de boisson <=0, Ça veut dire ne pas boire  */
    private final HashMap<Beverage,Integer> cart = new HashMap<>();
    public void adjust(Beverage beverage, int amount) {
    
        //TODO Code complet
        if(cart.containsKey(beverage)){
    
            cart.put(beverage,cart.get(beverage)+amount);
        }else{
    
            cart.put(beverage,amount);
        }
    }
    /** *  .Retour au total des boissons dans le panier  */
    public int getTotalAmount() {
    
        //TODO Code complet
        int sum = 0;
        for (Map.Entry<Beverage, Integer> entry : cart.entrySet()) {
    
            if(entry.getValue()>0) sum += entry.getValue();
        }
        return sum;
    }
    /** *  Retour au panier prix total des boissons  */
    public float getTotalPrice() {
    
        //TODO Code complet
        float sum = 0;
        for (Map.Entry<Beverage, Integer> entry : cart.entrySet()) {
    
            if(entry.getValue()>0&&entry.getKey().getPrice()>0) sum += entry.getKey().getPrice() * entry.getValue();
        }
        return sum;
    }

}
/** *  Table de boissons  */
class BeverageList {
    
    private final Map<Integer, Beverage> beverageMap;

    public BeverageList(Beverage[] beverages) {
    
        this.beverageMap = new HashMap<>();
        for (Beverage beverage : beverages) {
    
            this.beverageMap.put(beverage.getCode(), beverage);
        }
    }

    /** *  Retour à la boisson selon le Code de la boisson  * @param beverageCode */
    public Beverage getBeverageByCode(int beverageCode) {
    
        return beverageMap.get(beverageCode);
    }
}
/** * Boissons */
class Beverage implements Comparable<Beverage>{
    
    private final int code;//Code(No.)
    private final String name;//Nom
    private final float price;//Prix

    public Beverage(int code, String name, float price) {
    
        this.code = code;
        this.name = name;
        this.price = price;
    }

    public Integer getCode() {
    
        return code;
    }

    public float getPrice() {
    
        return price;
    }
    /** * code La même boisson est la même  */
    @Override
    public boolean equals(Object o) {
    
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Beverage beverage = (Beverage) o;
        return code == beverage.code;
    }

    @Override
    public int hashCode() {
    
        return Objects.hash(code);
    }

    /** *  Pour toutes sortes de tri  */
    @Override
    public int compareTo(Beverage o) {
    
        return this.code-o.getCode();
    }

    @Override
    public String toString() {
    
        return "["+ code +
                "," + name +String.format(",%.2f",price) +
                ']';
    }
}

class ExamTools{
    

    /** *  Recevoir l'entrée du clavier ,Et appuyez surc a,c a ...(c  C'est le Code de la boisson ,a Oui, la quantité.) Résolution de format pour <br/> * Retour àList .Chaque élément est un tableau ,Éléments du tableau0 C'est le Code de la boisson ,Élément1 Il est temps de commander quelques verres <br/> */
    static List<int[]> inputCodesAndAmounts() {
    
        ArrayList<int[]> list = new ArrayList<>();
        String line;
        try (Scanner scanner = new Scanner(System.in)) {
    
            line = scanner.nextLine();
        }
        String[] codesAndAmounts;
        if (line.matches("^\\+?\\d+\\s+[+-]?\\d+(\\s*,*\\s*\\+?\\d+\\s+[+-]?\\d+)*$")) {
    
            codesAndAmounts = line.split("[^\\d+-]+");
        } else {
    
            throw new IllegalArgumentException("error input");
        }
        for (int i = 0; i < codesAndAmounts.length - 1; i += 2) {
    
            list.add(new int[]{
    Integer.parseInt(codesAndAmounts[i]),
                    Integer.parseInt(codesAndAmounts[i + 1])});
        }
        return list;
    }

    /** *  Données d'essai pour l'examen  */
    static Beverage[] data() {
    
        return new Beverage[]{
    
                new Beverage(1, "Thé noir", 5.55f),
                new Beverage(2, "Café", 6.66f),
                new Beverage(3, "Thé au lait", 8.18f),
                new Beverage(4, "Thé vert", 5.32f),
                new Beverage(5, " Thé ", 66.6f),
                new Beverage(6, "Nid d'hirondelle", 22.2f),
                new Beverage(7, "Jus de poire", 7.77f),
                new Beverage(8, "Eau bouillante", 0.55f),
                new Beverage(9, "Jus d'orange", 4.44f),
                new Beverage(10, "Lait de soja", 3.43f)
        };
    }
}

原网站

版权声明
本文为[10 000 volts petit soleil]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/178/202206270845379201.html