无法完成此计划

时间:2015-10-24 07:58:15

标签: java

我是编程的新手,所以我无法完成这个程序。 我需要创建一个快餐店,询问客户的姓名,他们的选择,数量,电话号码,以及他们是否想订购其他东西。 我设法接受客户的输入,但唯一的问题是,如果客户选择订购其他东西,我无法想出添加小计。就好如果他们总计10美元并再订购10美元的订单,我该如何添加总额并显示账单? 如果我无法解释自己,我会道歉。 这是我到目前为止所做的事情:

import java.util.*;
public class KFC 
{
    public void display_menu() 
    {
        System.out.println("**********WELCOME TO XYZ**********");
        System.out.println("MAY I KNOW WHAT WOULD YOU LIKE?");
        System.out.println("1.OMG Burger:-");
        System.out.println("2.OMG Roller:-");
        System.out.println("3.Chicken Snacker:-");
        System.out.println("Please enter your choice");
    }

    public void question()
    {
        System.out.println("Would you like to have something else?");
        System.out.println("To place another order enter 9.");
        System.out.println("To check out enter 0.");
        Scanner q = new Scanner(System.in);  

        switch (q.nextInt()) 
        {
        case 0:
            break;

        case 9:System.out.println ("Please proceed.");
        new KFC();
        break;
        default:System.out.println ( " option" );
        break;
        }
    }


    public KFC() 
    {
        Scanner sc = new Scanner(System.in);
        display_menu();

        switch (sc.nextInt()) 
        {
        case 1:int a,b,Rate;String s;
        double e,t,f,g;
        float m;
        System.out.println("OMG Burger");
        System.out.println("Enter The Quantity");
        b=sc.nextInt();
        System.out.println("Enter Your Name");
        s=sc.next();
        System.out.println("Enter Your Mobile Number");
        m=sc.nextFloat();
        Rate=49;
        t=(5.0/100.0)*Rate;
        e=b*Rate;
        f=t*b;
        g=e+f;
        question();
        System.out.println("***********KFC**********");
        System.out.println("Name:"+s);
        System.out.println("Mobile Number:"+m);
        System.out.println("Choice:OMG Burger");
        System.out.println("Quantity:"+b);
        System.out.println("Rate:$"+Rate);
        System.out.println("Tax:"+f);
        System.out.println("Total price:$"+g);
        System.out.println("PLEASE VISIT AGAIN. HAVE A NICE DAY!!!");
        break;
        case 2:  System.out.println("OMG Roller");
        System.out.println("Enter The Quantity");
        b=sc.nextInt();
        System.out.println("Enter Your Name");
        s=sc.next();
        System.out.println("Enter Your Mobile Number");
        m=sc.nextFloat();
        Rate=59;
        t=(5.0/100.0)*Rate;
        e=b*Rate;
        f=t*b;
        g=e+f;
        question();
        System.out.println("***********KFC**********");
        System.out.println("Name:"+s);
        System.out.println("Mobile Number:"+m);
        System.out.println("Choice:OMG Roller");
        System.out.println("Quantity:"+b);
        System.out.println("Rate:$"+Rate);
        System.out.println("Tax:"+f);
        System.out.println("Total price:$"+g);
        System.out.println("PLEASE VISIT AGAIN. HAVE A NICE DAY!!!");
        break;
        case 3:   System.out.println("Chicken Snacker");
        System.out.println("Enter The Quantity");
        b=sc.nextInt();
        System.out.println("Enter Your Name"); 
        s=sc.next();
        System.out.println("Enter Your Mobile Number");
        m=sc.nextFloat();
        Rate=40;
        t=(5.0/100.0)*Rate;
        e=b*Rate;
        f=t*b;
        g=e+f;
        question();
        System.out.println("***********KFC**********");
        System.out.println("Name:"+s);
        System.out.println("Mobile Number:"+m);
        System.out.println("Choice:Chicken Snacker");
        System.out.println("Quantity:"+b);
        System.out.println("Rate:$"+Rate);
        System.out.println("Tax:"+f);
        System.out.println("Total price:$"+g);
        System.out.println("PLEASE VISIT AGAIN. HAVE A NICE DAY!!!");
        break;
        default:
            System.out.println ( "Unrecognized option" );
            break;
        }
    }

    public static void main (String[]args)
    {
        new KFC();
    }
}

2 个答案:

答案 0 :(得分:1)

最初,您正在为新客户创建新的KFC实例....现在当同一客户再次下订单时,您创建新的KFC实例,而不是使用相同的实例.bcoz您已将逻辑放入构造函数是完全错误的。正如oguzhand所指出的那样,这对于总计来说无济于事

构造函数用于初始化类的实例。通常用于创建新对象,通常使用参数指定初始状态或有关对象的其他重要信息

来自官方Java教程:

  

一个类包含被调用以从中创建对象的构造函数   班级蓝图。   有关构造函数refer

的更多信息

1)因此,不要在构造函数中编写逻辑....将其写入方法并调用该方法
2)同样如RC和oguzhand所指出的,你应该为变量赋予有意义的名称,并且应该使用很少的全局变量。例如

String customerName; 
long customerContactNo; 
long totalPrice; 
int burgerQuantity; 
int rollerQuantity;

答案 1 :(得分:0)

其他人已经提出的要点: 1)使用一些有意义的名称命名变量 2)不要在构造函数中完成工作

似乎您正在尝试编写程序来解决您的问题,而不是编写一组类。在Java中工作时,您应该创建一个面向对象的问题解决方案。

首先问问自己有多少东西。对于每个订单,有多少客户?订单中有多少菜单项?由于单个客户可以订购多个菜单项,因此您应该在一个订单中订购一个菜单项类。

到目前为止,我看到至少要编写三个不同的类: 1)代表您餐厅工作日的课程; 2)代表订单的类;和 3)表示订单中项目的类。

要获得订单的小计,您可以迭代OrderItem对象,询问每个对象的成本,并将其添加到变量中。将值存储在Order类的字段中(或者在需要时重新计算并返回它),然后你就可以了。