BlueJ: проблема увеличения и назначения переменных - PullRequest
0 голосов
/ 26 октября 2018

Я сделал новую версию для моего старого проекта с именем Subway .

Я превратил несколько расширяющихся классов и скомпилировал их в один класс.Теперь моя программа работает нормально и тоже выполняется.Все расчеты верны и проверены мной.Просто обратитесь к проектам, после которых я расскажу о так называемых логических ошибках

Мой проект:

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(), где пользователь может добавить больше элементов в переменную Single DimensionalМассив Order[].

Если пользователь вводит yes, переменная экземпляра int item, в которой хранится индекс для Order[] и Quantity[], должна увеличиваться на one * 1025.* и вызываемые функции должны быть запущены таким образом, чтобы следующий элемент сохранялся в следующем элементе SDA Order[] и Quantity[].

Но это не то, что происходит ..........

По какой-то причине переменная экземпляра int item не увеличивается.

Затем вы должны подумать (логически), что она может перезаписать данных, хранящихся в индексе 0Но опять же, этого не происходит.

Так что, когда самое интересноеction void main() достигает для вызова void Bill(), печатает самый первый элемент, который пользователь ввел бы.

Я действительно не понимаю, что делать сейчас.Я был бы очень признателен, если бы кто-нибудь смог мне помочь с этой логической ошибкой.

С уважением, Аюш Манге

...