2015-10-24 56 views
1

我是新手,因此无法完成此程序。 我需要创建一家快餐店,询问客户的姓名,他们的选择,数量,电话号码,以及他们是否想订购其他东西。 我设法接受客户的意见,但唯一的问题是,如果客户选择订购别的东西,我不知道如何添加小计。就好像他们总共有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(); 
    } 
} 
+0

它您打印在每种情况下顾客的所有细节使用情况来计算金钱为不同的项目,使全局变量加钱,你的情况就会限制你的每个项目的成本不好的做法,这就是为什么你没有得到正确的结果 –

+2

天啊。所以让我们以1 /命名变量为有意义的名称(不再有a,b,c等)2 /使用正确的大小写(变量名以小写字母开头)3 /正确的缩进。完成后,发布您的更新代码。关于你的问题,你认为新的肯德基()有什么作用? –

回答

1

开始你的新客户创造肯德基的新实例....现在当同一客户下订单再创建肯德基的新实例,而使用相同的实例..bcoz你已经把你的逻辑放在构造函数里,这是完全错误的。正如oguzhand所指出的,这对总计无帮助

构造函数用于初始化类的实例。往往是用来与参数指定有关对象

从官方的Java教程的初始状态或其他重要信息通常会创建新的对象:

一类包含调用从创建对象的构造函数 班级蓝图。 有关,而不是写你的逻辑内部构造....它写在一个方法,并调用该方法上构造refer

1)更多信息左右。
2)正如RC和oguzhand指出的,你应该给变量赋予有意义的名称,并且应该使用少量的全局变量。例

String customerName; 
long customerContactNo; 
long totalPrice; 
int burgerQuantity; 
int rollerQuantity; 
已经被人提出
0

要点: 1)名称中使用一些有意义的名称 2)不要做你的工作在构造函数中的变量

这好像你试图写一个程序来解决你的问题,而不是写一组类。在Java中工作时,您应该为该问题创建面向对象的解决方案。

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

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

要获得订单的小计,您可以迭代OrderItem对象,询问每个对象的花费,并将其添加到变量中。将值存储在Order类的字段中(或者在需要时重新计算并返回),并且您很好。