当缺少两个重要变量时,如何将对象作为参数提供给对象?

时间:2018-04-30 10:02:45

标签: java

在这个ShoppingCart程序中我需要用所有4个产品填充一个数组我想知道当main-method在类中调用构造函数“addItem”时我怎么能操作从cart中添加或删除的数量“Item”并给它一个对象作为参数,包含5个变量,只有3个变量被“接受”,因为它是一个“Item”对象而不是“Grocery”或“Article”对象而“Item”对象只能有3个参数。

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.");
        }
    }       
}

“项目”类

public abstract class Item {

protected int pid; //eindeutige Produktkennzeichnung
protected String signifier; //Name des Produkts, z.B. Butter
protected float pricePerUnit; //Preis pro Einheit

Item(){}

Item(int pid, String signifier, float pricePerUnit){
    this.pid=pid;
    this.signifier=signifier;
    this.pricePerUnit=pricePerUnit;
}



int getPid() {
    return this.pid;
}
String getSignifier() {
    return this.signifier;
}
float getPricePerUnit() {
    return pricePerUnit;
}
void setPricePerUnit(int newprice) {
    this.pricePerUnit=newprice;
}

public String toString() {
    return "This is the Base Class";
}

abstract public void addItem(Item toAdd);
abstract public void removeItem(Item toRemove);
abstract public String getUnit();
abstract public boolean isEmpty();
abstract public float getPrice(); 

“文章”类

public class Article extends Item {


float draht;
float fließen;
String unit;
float amount;

//对不起我放在这里的每个代码都没有正确格式化,我不知道问题出在哪里。

在“Item”中有一个带有超级构造函数调用的Article的构造函数,并且还添加了“this.unit = unit;”和“this.amount =金额”;它呢

和AddItem-方法我不知道如何使用,因为“Item”中已经有广告AddItem方法。

public class ShoppingCart {

public static Item[] cart;
int temporary;
private int capacity;

public ShoppingCart() {

}

 public void addItem(Item toAdd) {



     if(toAdd instanceof Grocery) {

         if(toAdd.pid==1) {


             cart[0]=new Grocery(toAdd.pid, toAdd.signifier, toAdd.pricePerUnit);
             Grocery.packetCount+=((Grocery) toAdd).packetCount;
             System.out.println(cart[0]);
         }


         if(toAdd.pid==2) {


         }
     }

     if(toAdd.pid==3) {

     }
     if(toAdd.pid==4) {

     }
 }

 public void removeItem(Item toRemove) {
     //Waren entfernen/Menge reduzieren
 }

0 个答案:

没有答案