BlueJ:变量递增和分配问题

时间:2018-10-26 13:37:21

标签: java increment bluej

我为旧项目 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[],则存储yesint item的索引号的实例变量Order[]应该增加 1 ,然后应运行被调用的函数,以便将下一项存储在SDA Quantity[]Order[]的下一个元素中。

但这不是正在发生的事情..........

由于某些原因,实例变量Quantity[]不会增加。

然后,您必须(逻辑上)认为可能会覆盖存储在索引0处的数据。但是同样,不会发生这种情况。

因此,当函数int item到达调用void main()时,它将打印用户本应输入的第一项。

我真的很困惑现在该怎么办。如果有人可以帮助我解决此逻辑错误,我将非常荣幸。

您真诚的, 阿育曼格

0 个答案:

没有答案