在这个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
}