首页 > 解决方案 > 如果产品 ID 相同且没有占位符为 Null,则覆盖数组中的对象

问题描述

我需要能够在 SoppingCart 中使用“addItem”方法将具有相同 pid 号的产品添加到数组中已经存在的对象并覆盖旧对象。同时,数组中不应该存在没有内容的占位符。

我认为我尝试的方式行不通,但我真的不知道这怎么可能。

这是课程:

public class ShoppingCart {

public Item[] cart;
int temporary;
int totalAmountB;
int totalAmountM;
int totalAmountD;
int totalAmountF;

public ShoppingCart() {

}

 public void addItem(Item toAdd) {



     if(toAdd instanceof Grocery) {

         if(toAdd.pid==1) {

         totalAmountB+=Grocery.getPacketCount();

         cart[0]=new Grocery(toAdd.pid, toAdd.signifier, toAdd.pricePerUnit, Grocery.getExpiryDate(), totalAmountB);
         }

         if(toAdd.pid==2) {

         totalAmountM+=Grocery.getPacketCount(); 
         cart[1]=new Grocery(toAdd.pid, toAdd.signifier, toAdd.pricePerUnit, Grocery.getExpiryDate(), totalAmountM); 
         }
     }

     if(toAdd instanceof Article) {

         if(toAdd.pid==3) {

         totalAmountD+=Article.getAmount();
         cart[2]=new Article(toAdd.pid, toAdd.signifier, toAdd.pricePerUnit, "lfdm", totalAmountD);

         }
         if(toAdd.pid==4) {

         totalAmountF+=Article.getAmount();
         cart[3]=new Article(toAdd.pid, toAdd.signifier, toAdd.pricePerUnit, "qm", totalAmountF);

         }
     }


 }

主要方法

public class ShoppingMall {

public static void main(String[] args){

    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Ihr digitaler Warenkorb:");

    boolean loop = true;
    int item = 0;
    String action = "";
    int pckg;
    float amount = 0.0f;



    ShoppingCart basket = new ShoppingCart();

    while (loop) {
        System.out.println("\nWelcher Artikel soll bearbeitet werden");
        System.out.println("------------------------------");
        System.out.println("1 Butter");
        System.out.println("2 Milch");
        System.out.println("3 Draht");
        System.out.println("4 Fliesen");           
        System.out.println("\nSie haben den Einkauf abgeschlossen?\nWaehlen Sie zwischen: ");
        System.out.println("------------------------------");
        System.out.println("5 Warenkorb ausgeben");
        System.out.println("0 Exit\n");
        System.out.print("Ihre Eingabe bitte: ");

        try{
            item = Integer.valueOf(input.readLine());


            if((item < 5) && (item > 0))
            {
                //System.out.println("\n------------------------------");
                do{
                    System.out.print("Waehlen Sie + fuer hinzufuegen oder - fuer entfernen. ");
                    action = input.readLine();
                }while(!action.equals("+") && !action.equals("-"));
            }

            //if(action.equals("+") || action.equals("-"))
            //{
                switch (item) {
                    case 1: {
                        System.out.print("Wieviele Packungen Butter ? ");
                        pckg = Integer.valueOf(input.readLine());
                        Grocery groc = new Grocery(1,"Butter",1.59f,20180618,pckg);
                        if(action.equals("+"))
                            basket.addItem(groc);
                        else
                            basket.removeItem(groc);
                        break;
                    }
                    case 2: {                        
                        System.out.print("Wieviele Packungen Milch ? ");
                        pckg = Integer.valueOf(input.readLine());
                        Grocery groc = new Grocery(2,"Milch",1.09f,20180618,pckg);
                        if(action.equals("+"))
                            basket.addItem(groc);
                        else
                            basket.removeItem(groc);
                        break;
                    }
                    case 3: {
                        System.out.print("Wieviele laufende Meter (lfdm) Draht? ");
                        amount = Float.valueOf(input.readLine());
                        Article art = new Article(3,"Draht",0.36f,"lfdm",amount);
                        if(action.equals("+"))
                            basket.addItem(art);
                        else
                            basket.removeItem(art);

                        break;
                    }
                    case 4: {

                        System.out.print("Wieviele Quadratmeter (qm) Fliesen ? ");
                        amount = Float.valueOf(input.readLine());
                        Article art = new Article(4,"Fliesen",20.00f,"qm",amount);
                        if(action.equals("+"))
                            basket.addItem(art);
                        else
                            basket.removeItem(art);

                        break;
                    }
                    case 5: {
                        System.out.println("\nIn Ihrem Warenkorb befindet sich:\n");
                        System.out.println("Artikel     Menge         Preis/Einheit             Preis");
                        System.out.println("----------------------------------------------------------");
                        System.out.println(basket);
                        System.out.print("\nWeiter mit beliebiger Taste!");
                        input.readLine();
                        break;
                    }
                    case 0: {
                        loop = false;
                        System.out.println("\nProgramm beendet");
                        break;
                    }   
                    default:
                        System.out.println("Ihre Eingabe wurde nicht erkannt!\n");

                }
            //}
            //else
            //  System.out.println("Ihre Eingabe wurde nicht erkannt!\n");

        }
        catch(Exception e){
            System.out.println("\nFalsche Eingabe:\nLebensmittel werden nur in ganzen Packungen abgegeben!\n"
                               + "Non- Food Produkte auch in Bruchteilen der jeweiligen Einheit\n"
                               + "Geben sie eine ganze Zahl bei Lebensmitteln ein oder eine \n"
                               + "Gleitpunktzahl bei Non- Food Produkten.");
        }
    }       
}

标签: java

解决方案


推荐阅读