当前位置: 代码迷 >> Java相关 >> 大侠们,帮小弟看看有关问题是咋回事,求解决方案!
  详细解决方案

大侠们,帮小弟看看有关问题是咋回事,求解决方案!

热度:7806   发布时间:2013-02-25 21:46:16.0
大侠们,帮小弟看看问题是怎么回事,求解决方案!!!!
菜谱的数组只能写3 超过了调试的时候就会报错...
求解决方案和问题所在.....
Java code
import java.util.*;public class 美味餐厅 {    public static void main(String[] args) {        BOSS boss = new BOSS();        boss.eat();    }}class 菜谱 {    String name;    double price;    int number;    int 点菜数;}class 餐厅 {    菜谱[] cp = new 菜谱[3];    public void initial() {        菜谱 蒸排骨 = new 菜谱();        蒸排骨.name = "蒸排骨";        蒸排骨.price = 15;        蒸排骨.number = 4;        蒸排骨.点菜数 = 0;        菜谱 白切鸡 = new 菜谱();        白切鸡.name = "白切鸡";        白切鸡.price = 15;        白切鸡.number = 10;        白切鸡.点菜数 = 0;        菜谱 齿牛肉 = new 菜谱();        齿牛肉.name = "齿牛肉";        齿牛肉.price = 20;        齿牛肉.number = 2;        齿牛肉.点菜数 = 0;        cp[0] = 蒸排骨;        cp[1] = 白切鸡;        cp[2] = 齿牛肉;    }}class BOSS {    餐厅 ct = new 餐厅();    String name = "";    public void eat() {        ct.initial();        功能选择();    }    public void 功能选择() {        主界面();        Scanner scn = new Scanner(System.in);        int n = scn.nextInt();        switch (n) {        case 1:            System.out.print("请输入菜名:");            name = scn.next();            点菜(name);            返回主界面();            break;        case 2:            查看();            返回主界面();            break;        case 3:            买单();            返回主界面();            break;        case 4:            System.out.print("欢迎下次光临!!");            break;        }    }    public void 返回主界面() {        System.out.print("输入0返回:");        Scanner scn = new Scanner(System.in);        int n = scn.nextInt();        if (n == 0) {            功能选择();        } else {            System.out.print("输入异常,请重新输入:");            返回主界面();        }    }    public void 主界面() {        System.out.println("*********欢迎来到美味餐厅**********");        System.out.println("1、点菜");        System.out.println("2、查看菜谱&数量");        System.out.println("3、买单");        System.out.println("4、退出");        System.out.println("***********************************");        System.out.print("请输入功能编号:");    }    public void 点菜(String name) {        for (int i = 0; i < ct.cp.length; i++) {            if (ct.cp[i] != null) {                if (name.equals(ct.cp[i].name)) {                    if (ct.cp[i].number > 0) {                        ct.cp[i].number--;                        ct.cp[i].点菜数++;                        System.out.println("点菜成功,蒸排骨还剩" + ct.cp[i].number                                + "份。");                        return;                    }                }            }        }        System.out.print("点菜失败..");    }    public void 查看() {        System.out.println("菜名\t价格\t份量");        for (int i = 0; i < ct.cp.length; i++) {            if (ct.cp[i] != null) {                System.out.println(ct.cp[i].name + "\t" + ct.cp[i].price + "\t"                        + ct.cp[i].number);            }        }    }    public void 买单() {        Scanner scn = new Scanner(System.in);        double 菜价 = 0;        System.out.println("您点的菜详细信息如下:");        System.out.println("菜名\t价格\t份量");        for (int i = 0; i < ct.cp.length; i++) {            if (ct.cp[i].name != null) {                if (ct.cp[i].点菜数 > 0) {                    菜价 = ct.cp[i].price * ct.cp[i].点菜数+菜价;                    System.out.println(ct.cp[i].name + "\t" + ct.cp[i].price                            + "\t" + ct.cp[i].点菜数);                    continue;                }            }        }        System.out.println("共计:" + 菜价 + "元");        System.out.print("请输入付款金额:");        int 付款 = scn.nextInt();        double 找零 = 付款 - 菜价;        System.out.println("\n应收:" + 菜价 + "元,实收" + 付款 + "元,找零:" + 找零 + "元");    }}
  相关解决方案