Java基础练习 点菜模拟

1、实现后的效果:

image-20220127093034964

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来退出所有循环
            }
        }

    }
}

posted @ 2022-01-27 09:39  XinBlog  阅读(79)  评论(0编辑  收藏  举报