购物车程序:如果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;
.....................
答案 0 :(得分:1)
如果我正确理解您的问题,您希望能够将3个值传递给Grocery构造函数,即使它需要5个。
尝试使用三个参数重载构造函数,使其余值保持默认值,并定义一个新函数,通过使用键标识该对象,可以修改Grocery对象中的数据。在您的情况下,密钥可以是Grocery.pid
希望这有用。