Java小项目——点菜
要求:::
主界面显示
---------主菜单-----------
点菜 1
已点菜品 2
结账 3
------------请输入编号---------
按编号1将会进入点菜显示如下
1 鱼香肉丝 39.00
2 宫保鸡丁 34.00
3 凉拌黄瓜 12.00
4 辣子鸡块 24.00
5 辣椒炒肉 23.00
----------请根据编号进行选择-------
同时按0退出点菜
按编号2 显示已点菜品例如
已点 鱼香肉丝
按3 进行结账(例如选择了2 和3)
请结账 46元
思路::
- 首先所有的菜品具有相同的属性,应该在一个类中,该类中包含 编号、菜名和价格三个属性,同时还应该含有一个带参数的方法,保证可以对其进行初始化
- 该app需要一个主菜单,可以写一个方法menu()去实现。在主代码中调用该方法。在此时我们需要向程序中输入一个数值用来进行选择,因此要使用scanner。值得注意的是,我们想要一直在主菜单上进行循环,因为有可能用户还想继续操作,所以需要一个while循环
- 我们进行选择。1----点菜 2-------显示已点菜品 3-------买单,可以使用swich实现。
- 刚开始我们需要初始化一些菜品,在这里我们可以使用一个List集合来存储所有的菜品。需要写一个方法dish来初始化菜单,同时将这些菜品的信息添加到集合list中。并在主程序中进行调用
- 按1进行点菜 需要一个方法showdish方法显示所有的菜品信息。可以通过循环遍历集合list来实现。 在点菜的过程中需要进行输入,需要使用Scanner。这里也需要一个while(true)循环表示一直可以选菜,同时进行if判断如果输入为0返回主菜单。在这里我们还需要展示已选的菜品,通过list进行操作(值得注意的是list中下标是从0开始的)。在这里我们还需要将已点的菜品保存下来(创建一个新的集合personlist),用于后面进行显示已点菜单和买单操作
- 按2显示已点菜品。这时需要遍历我们之前创建的集合personlist
- 按3需要对已点菜品的价格进行累加,需要从集合personlist1中获取已点菜品的价格
/* 显示类的属性和方法 */ public class Dish { private int id; private String name; private double price; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public Dish(int id, String name, double price) { this.id = id; this.name = name; this.price = price; } }
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class DishApp { //存储所有菜品的集合 static List<Dish> list=new ArrayList<>(); //存储已点菜品的集合 static List<Dish> personlist=new ArrayList<>(); public static void main(String [] args){ dish(); while(true) { menu(); //输入 Scanner num = new Scanner(System.in); int d=num.nextInt(); switch(d){ case 1: //显示菜品 while(true){ showdish(); System.out.println("------请点菜-------按0退出"); int a=num.nextInt(); if(a==0) { break; } try {// 若输入编号小于0大于5时,就会出现错误,所以要使用try catch进行异常处理 System.out.println("你点了" + list.get(a - 1).getName()); personlist.add(list.get(a - 1)); //保存已点菜品信息 } catch(Exception e){ System.out.println("请重新输入"); } } case 2: // 显示已点菜品 System.out.println("您已经点了:::"); persondish(); break; case 3: //买单 double y=buy(); System.out.println("您总共消费:"+y+"元"); break; } } } /* 显示主菜单 */ public static void menu(){ System.out.println("------主菜单-------"); System.out.println("点菜"+"--------"+"1"); System.out.println("已点菜品"+"----"+"2"); System.out.println("买单"+"--------"+"3"); System.out.println("请输入编号::"); } /* 初始化菜单 */ public static void dish(){ Dish dish1=new Dish(1,"鱼香肉丝",39.00); list.add(dish1); Dish dish2=new Dish(2,"宫保鸡丁",34.00); list.add(dish2); Dish dish3=new Dish(3,"凉拌黄瓜",12.00); list.add(dish3); Dish dish4=new Dish(4,"辣子鸡块",24.00); list.add(dish4); Dish dish5=new Dish(5,"辣椒炒肉",23.00); list.add(dish5); } /* 显示菜品 */ public static void showdish(){ for (int i = 0; i <list.size() ; i++) { Dish dd=list.get(i); System.out.println(dd.getId()+" "+dd.getName()+" "+dd.getPrice()); } } /* 显示已点菜单 */ public static void persondish(){ for (int i = 0; i < personlist.size(); i++) { System.out.println(personlist.get(i).getName()+" "); } } /* 买单:需要对已点菜品的价格进行累加 */ public static double buy(){ double y=0; for (int i = 0; i <personlist.size() ; i++) { y+=personlist.get(i).getPrice(); } return y; } }
-
发现一个错误,在点菜的时候若输入编号小于0而大于5时就会报错,所以要进行异常处理