简单的火锅点餐
主要知识点:字典、分割
写一个程序实现输出菜单以及价格的火锅点餐功能。(锅底只能一份)
示例1:
输入:番茄锅,肥牛 5,虾滑 2,土豆 1,面条 3
输出:
点餐:番茄锅,5份肥牛,2份虾滑,1份土豆,3份面条
总价:286
示例2:
输入:菌汤锅,肥牛,面条
输出:
点餐:菌汤锅,1份肥牛,1份面条
总价:68
代码
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class HotPot {
public static void main(String[] args) {
// 初始化菜单
final Map<String, Integer> potDict = new HashMap<String, Integer>(){{
put("番茄锅",25);
put("菌汤锅",29);
put("麻辣锅",33);
}};
final Map<String, Integer> mealDict = new HashMap<String, Integer>(){{
put("肥牛",35);
put("虾滑",32);
put("土豆",10);
put("面条",4);
}};
// 展示菜单
System.out.println("--- 锅底菜单 ---");
for(Map.Entry item : potDict.entrySet()) {
System.out.println(item.getKey() + " --- " + item.getValue());
}
System.out.println("---------------\n");
System.out.println("--- 菜品菜单 ---");
for(Map.Entry<String, Integer> item : mealDict.entrySet()) {
System.out.println(item.getKey() + " ---- " + item.getValue());
}
System.out.println("---------------\n");
// 点餐
Scanner sc = new Scanner(System.in);
System.out.println("请点餐:");
String[] myHotPot = sc.nextLine().split(",|,");
// 菜单字典化 {菜品=份数}
Map<String, Integer> myMenu = new HashMap<String, Integer>();
for (int i = 0; i < myHotPot.length; i++){
String[] meal = myHotPot[i].split(" ");
if (meal.length<2){
// 无数量显示,默认为1份
myMenu.put(meal[0],1);
}else {
myMenu.put(meal[0],Integer.parseInt(meal[1]));
}
}
// System.out.println(myMenu);
int total = 0; // 总价
// 锅底
total += potDict.get(myHotPot[0]);
System.out.print("点餐:" + myHotPot[0]);
// 菜品 数量*单价
for (Map.Entry<String, Integer> item : myMenu.entrySet()) {
if (mealDict.containsKey(item.getKey())) {
total += mealDict.get(item.getKey()) * item.getValue();
System.out.print("," + item.getValue() + "份" + item.getKey());
}
}
System.out.println("\n总价:" + total);
}
}
运行结果:
--- 锅底菜单 ---
菌汤锅 --- 29
番茄锅 --- 25
麻辣锅 --- 33
---------------
--- 菜品菜单 ---
虾滑 ---- 32
肥牛 ---- 35
土豆 ---- 10
面条 ---- 4
---------------
请点餐:
番茄锅,肥牛 5,虾滑 2,土豆 1,面条 3
点餐:番茄锅,2份虾滑,5份肥牛,1份土豆,3份面条
总价:286