当前位置:网站首页>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)
};
}
}
边栏推荐
- VIM from dislike to dependence (19) -- substitution
- [cloud native] 2.3 kubernetes core practice (Part 1)
- I'm almost addicted to it. I can't sleep! Let a bug fuck me twice!
- The background prompt module for accessing fastadmin after installation does not exist
- ArrayList和LinkedList的区别
- 冒牌构造函数???
- Demand visual Engineer
- How Oracle converts strings to multiple lines
- Internal class ~ lock ~ access modifier
- Object含有Copy方法?
猜你喜欢

Correctly understand MySQL mvcc

ServletConfig与ServletContext

Creation process and memory layout of objects at JVM level

vim 从嫌弃到依赖(20)——global 命令

win10为任意文件添加右键菜单

数字IC-1.9 吃透通信协议中状态机的代码编写套路

webrtc入门:12.Kurento下的RtpEndpoint和WebrtcEndpoint

DV scroll board width of datav rotation table component

IO pin configuration and pinctrl drive

MATLAB小技巧(19)矩阵分析--主成分分析
随机推荐
RMAN-08137 主库无法删除归档文件
Oracle uses an SQL to find out which data is not in a table
使线程释放锁资源的操作/方法重载一点注意事项
三道基础面试题总结
VIM from dislike to dependence (19) -- substitution
静态代码块Vs构造代码块
【云原生】2.3 Kubernetes 核心实战(上)
Matlab tips (19) matrix analysis -- principal component analysis
並發編程JUC的AQS底層源碼
数据类型占内存大小?LongVsObject
(original) custom drawable
When multiple network devices exist, how to configure their Internet access priority?
ZABBIX deployment instructions (server+win client + switch (H3C))
Zabbix部署说明(Server+Win客户端+交换机(H3C))
Order by injection of SQL injection
MySQL lock details
The difference between ArrayList and LinkedList
【mysql篇-基础篇】通用语法1
NoSQL database redis installation
webrtc入门:12.Kurento下的RtpEndpoint和WebrtcEndpoint