如果缺少构造函数的两个变量,如何将对象赋给数组?

时间:2018-04-27 22:05:23

标签: java

购物车程序:如果cart[0]方法给构造函数5个变量,但它只有3个变量,如何在数组中创建一个新对象(在本例中为main)在构造函数中。不允许更改main方法。 我试了一下,但我觉得不行。

public class ShoppingCart {

public Item[] cart;
int temporary;
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) toAdd).getExpiryDate(), ((Grocery) toAdd).getPacketCount()+Grocery.packetCount);


         }



         if(toAdd.pid==2) {
            ............

主方法

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;
                    .....................

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您希望能够将3个值传递给Grocery构造函数,即使它需要5个。

尝试使用三个参数重载构造函数,使其余值保持默认值,并定义一个新函数,通过使用键标识该对象,可以修改Grocery对象中的数据。在您的情况下,密钥可以是Grocery.pid

希望这有用。