我是编程的新手,所以我无法完成这个程序。 我需要创建一个快餐店,询问客户的姓名,他们的选择,数量,电话号码,以及他们是否想订购其他东西。 我设法接受客户的输入,但唯一的问题是,如果客户选择订购其他东西,我无法想出添加小计。就好如果他们总计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 :(得分: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类的字段中(或者在需要时重新计算并返回它),然后你就可以了。