Java 当构造函数的两个变量丢失时,如何将对象赋给数组?

Java 当构造函数的两个变量丢失时,如何将对象赋给数组?,java,Java,购物车程序:如果main方法给构造函数5个变量,但构造函数中只有3个变量,那么如何在Cart[0]的数组中创建新对象呢。不允许更改主方法。 我试过一些东西,但我想那是行不通的 public class ShoppingCart { public Item[] cart; int temporary; public ShoppingCart() { } public void addItem(Item toAdd) { if(toAdd instanceof Grocery

购物车程序:如果main方法给构造函数5个变量,但构造函数中只有3个变量,那么如何在Cart[0]的数组中创建新对象呢。不允许更改主方法。 我试过一些东西,但我想那是行不通的

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

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

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


希望这对您有所帮助。

只需再添加一个接受三个变量的构造函数。您的问题尚不清楚,首先您能否批准后期编辑。第二,你能为我们提供一个明确的问题添加项目和杂货类结构,以便我们可以帮助你!