我为旧项目 Subway 创建了新版本。
我打开了许多扩展类,并将它们编译为一个类。现在,我的程序可以正常运行,并且也可以执行。这些计算都是正确的,并由我检查。只需参考项目,然后我将讨论所谓的 Logical Errors
我的项目:
import java.util.*;
public class Final_Subway
{
String Order_Menu[]={"AP","CK","CCP","CS","CTA","CTI","CP","HBK","CCSW","CKSW","CSSW","VSSW","CHIPSS","CHIPSB","CSEC","CE","WCE","MIRINDA3","MIRINDA5"};
int Quantity[]=new int[20];
int Price[]={150,150,150,200,180,195,230,120,70,90,90,60,15,30,100,120,85,30,50};
String Order[]=new String[20];
int item_price[]=new int[20];
int item_net[]=new int[20];
int i=0,q=0,item=0;
double total=0,net=0,GST=0;
String order="",choice_yn="";
public static void main()
{
Final_Subway obj=new Final_Subway();
obj.Loading_Screen();
obj.menu();
obj.accept();
obj.search();
obj.calculate();
obj.choice();
obj.Bill();
}
public void Loading_Screen()
{
int a=1;
System.out.println("Loading...");
for(a=1;a<=999999999;a++)
{
}
for(a=1;a<=999999999;a++)
{
}
for(a=1;a<=999999999;a++)
{
}
System.out.println("\f");
}
public void menu()
{
System.out.println("\t\t\t\t\t\t\t\tWelcome to Subway....");
System.out.println("================================================================================================================================================");
System.out.println("Sandwiches\t\t\t\tMRP(Rs.)\tSnacks\t\t\t\t\tMRP(Rs.)\tBreakfast\t\tMRP(Rs.)");
System.out.println("Aloo Patty(AP)\t\t\t\tRs.150 \tChatpata Chana SubWrap(CCSW)\t\tRs.70\tChicken Slice,Eggs and Cheese(CSEC)\tRs.100");
System.out.println("Chicken Kofta(CK)\t\t\tRs.150 \tChicken Kofta SubWrap(CKSW)\t\tRs.90\tCheese and Egg(CE)\t\t\tRs.120");
System.out.println("Chatpata Chana Patty(CCP)\t\tRs.150 \tChicken Strips SubWrap(CSSW)\t\tRs.90\tWestern Cheese and Egg(WCE)\t\tRs.85");
System.out.println("Chicken Slices(CS)\t\t\tRs.200 \tVeg Shammi SubWrap(VSSW)\t\tRs.60\t================================================");
System.out.println("Chicken Tandoori(CTA)\t\t\tRs.180 \t================================================================================================");
System.out.println("Chicken Tikka(CTI)\t\t\tRs.195 \tSides\t\t\t\t\tMRP(Rs.)\tDrinks\t\t\t\tMRP(Rs.)");
System.out.println("Corn and Peas(CP)\t\t\tRs.230 \tChips[Small](CHIPSS)\t\t\tRs.15 \tMirinda[300ml](MIRINDA3)\t\tRs.30 ");
System.out.println("Hara Bhara Kebab(HBK)\t\t\tRs.120 \tChips[Big](CHIPSB)\t\t\tRs.30 \tMirinda[500ml](MIRINDA5)\t\tRs.50 ");
System.out.println("================================================================================================================================================");
}
public void accept()
{
Scanner sc=new Scanner(System.in);
System.out.println("Enter the Code in the brackets to order your item:");
order=sc.nextLine().toUpperCase();
System.out.println("Enter the Quantity");
q=sc.nextInt();
}
public void search()
{
Final_Subway obj=new Final_Subway();
boolean flag=false;
for(i=0;i<Order_Menu.length;i++)
{
if(Order_Menu[i].equals(order))
{
Order[item]=Order_Menu[i];
Quantity[item]=q;
item_price[item]=Price[i];
flag=true;
++item;
break;
}
}
if(flag==false)
{
System.out.println("Item not found, Enter code again:");
obj.accept();
obj.search();
}
}
public void calculate()
{
for(i=0;i<item_price.length;i++)
{
item_net[i]=Quantity[i]*item_price[i];
}
for(i=0;i<item_net.length;i++)
{
total+=item_net[i];
}
GST=total*28/100;
net=(double)GST+total;
Math.round(net);
}
public void choice()
{
Final_Subway obj=new Final_Subway();
Scanner sc=new Scanner(System.in);
System.out.println("Would you like to order something else(yes/no)?");
choice_yn=sc.nextLine().toLowerCase();
if(choice_yn.equals("yes"))
{
obj.accept();
obj.search();
obj.calculate();
obj.choice();
}
}
public void Bill()
{
System.out.println("Sr no.\tItem Code\tQuantity\tPrice\tNet");
for(i=0;i<Order.length;i++)
{
if(Quantity[i]!=0)
{
System.out.println((i+1)+"\t"+Order[i]+"\t\t"+Quantity[i]+"\t\t"+item_price[i]+"\t"+item_net[i]);
}
}
System.out.println("GST: "+GST);
System.out.println("Net Amount: "+net);
}
}
现在出现错误:
输入,搜索和检查第一个项目是否与分配了相应价格的菜单代码匹配后,它将转到void choice()
,用户可以在其中向变量“一维数组” {{1}添加更多项目}。
如果用户输入Order[]
,则存储yes
和int item
的索引号的实例变量Order[]
应该增加 1 ,然后应运行被调用的函数,以便将下一项存储在SDA Quantity[]
和Order[]
的下一个元素中。
但这不是正在发生的事情..........
由于某些原因,实例变量Quantity[]
不会增加。
然后,您必须(逻辑上)认为可能会覆盖存储在索引0处的数据。但是同样,不会发生这种情况。
因此,当函数int item
到达调用void main()
时,它将打印用户本应输入的第一项。
我真的很困惑现在该怎么办。如果有人可以帮助我解决此逻辑错误,我将非常荣幸。
您真诚的, 阿育曼格