1、实现后的效果:
2、下面是具体的代码:
package com.practice;
public class Menu {
public int id;//菜品id
public String name; //菜名
public double price; //价格
//有参构造方法
public Menu(int id,String name,double price){
this.id = id;
this.name = name;
this.price = price;
}
}
package com.practice;
import java.util.ArrayList;
import java.util.List;
public class MainMenu {
//用一个集合来存放菜单里的菜品
List<Menu> list = new ArrayList<>();
//用另一个集合来存放已点的菜品
List<Menu> list2 = new ArrayList<>();
//消费金额
double consume = 0;
//将菜品存放到集合里
public void storeDish(){
list.add(new Menu(1,"回锅肉",18.0));
list.add(new Menu(2,"土豆肉丝",18.0));
list.add(new Menu(3,"水煮肉片",25.0));
list.add(new Menu(4,"家乡腊肉",30.0));
list.add(new Menu(5,"小白菜",10.0));
}
//主菜单
public void showMainMenu(){
System.out.println("======主菜单=====");
System.out.println("菜单\t\t\t\t1");
System.out.println("已点菜品\t\t\t2");
System.out.println("结账\t\t\t\t3");
System.out.println("请选择编号:");
}
//显示菜单
public void showMenu(){
System.out.println("======亲,请点菜======");
//遍历菜单集合 并输出
for (int i = 0; i < list.size(); i++) {
Menu dish = list.get(i);
System.out.println(dish.id+"\t"+dish.name+"\t"+dish.price+"元");
}
System.out.println("按照编号选择,按0返回主菜单!");
}
//显示已点菜品
public void showOrder(){
System.out.println("亲,下面是您点的菜:");
//遍历已点菜品 这里使用增强for
for (Menu order : list2) {
//计算一共消费金额
consume += order.price;
System.out.println(order.id+"\t"+order.name+"\t"+order.price+"元");
}
}
}
package com.practice;
import java.util.Scanner;
public class Application {
public static void main(String[] args) {
//实现mainMenu
MainMenu mainMenu = new MainMenu();
//初始化菜单
mainMenu.storeDish();
//扫描器,用来接收用户在主菜单输入的编号
Scanner scanner = new Scanner(System.in);
//接收用户在主菜单输入的编号
int mainId;
//接收用户菜单输入编号
int menuId;
while (true){
//显示主菜单
mainMenu.showMainMenu();
//获取用户在主菜单输入的编号
mainId = scanner.nextInt();
switch (mainId){
case 1:
//显示菜单
mainMenu.showMenu();
while (true){
//获取用户菜单输入编号
menuId = scanner.nextInt();
if (menuId == 0){
break;
}
//存放已点的菜品,因为集合下标是从0开始,而用户输入是从1开始,所有要减1.
mainMenu.list2.add(mainMenu.list.get(menuId-1));
//输出用户点的菜品
System.out.println("您点了份"+mainMenu.list.get(menuId-1).name);
}
break;
case 2:
//显示已点菜品
mainMenu.showOrder();
break;
case 3:
//结账
System.out.println("亲,您一共消费了"+mainMenu.consume+"元");
//用完关闭扫描器
scanner.close();
return;//这里用return来退出所有循环
}
}
}
}