【发布时间】:2013-07-08 15:08:19
【问题描述】:
让我粘贴我的整个问题。请考虑一下我的英语有点弱。
问题:根据收到的销售订单进行调度的调度系统 根据订购的物品,需要适当包装的物品。假设这家商店正在销售富有艺术气息的古董。这些艺术品 可以归类为“易碎”物品。易碎物品有两种 在商店出售的是“陶器”和“玻璃器皿”。每个项目都需要与适当的捆绑 包。捆绑有两种类型,“BubbleWrap”或“Cushioning”。对于易碎物品 泡沫包装完成并使用非易碎物品“缓冲”。 然后,您需要创建一个具有 ArrayList 艺术品的 ARTITEM 类和一个 Dispatcher 来打包不同类型的 Artitem 对象,这些对象可以被识别为脆弱的。 Salesorder 是我们的演示类,它将使用 Dispatcher 打包一个项目?
我有一个接口 Artpiece.java。我有 ArtItems.java 类,并且在 ArtItems 中实现了 Artpiece.java 对象。
我的问题是,我需要在 Artpeice 的 ArrayList 中添加项目,Artpiece 基本上会有易碎的项目。例如[addItem(Artpiece artpiece)],然后我需要设置从 getCost() 方法获取总价。然后显示哪个易碎物品在里面。
我不知道如何从 ArrayList 中获取值。每当我尝试存储在数组列表中时,都会出错。
请看我下面的代码:
//Artpiece.java
interface Artpiece{
public String name();
public Bundling bundling();
public float price();
}
//Bundling.java
interface Bundling{
public String bundle();
}
//Cushioning.java
public class Cushioning implements Bundling{
//Override
public String bundle() {
return "Cushioning";
}
}
//BubbleWrap.java
public class BubbleWrap implements Bundling{
public String bundle() {
return "BubbleWrap";
}
//ArtItem.java
import java.util.ArrayList;
public class ArtItems implements Artpiece{
ArrayList<Artpiece> artpiece = new ArrayList<Artpiece>();
artpiece.add(void price());
//Override
public String name() {
return "Pottery";
}
//Override
public Bundling bundling() {
return null;
}
//Override
public float price()
{
return 25;
}
public float getCost()
{
int sum=1, total = 0;
return total += sum;
}
public void addItem(Pottery pottery)
{
}
public void addItem(GlassWare glassWare)
{
}
public void showItems() {
}
}
}
//Now I am posting the driver classes.
//Dispatcher.java
public class Dispatcher {
public ArtItems prepareFGitem(){
ArtItems artitems = new ArtItems();
artitems.addItem(new Pottery());
artitems.addItem(new GlassWare());
return artitems;
}
}
//Salesorder.java
public class Salesorder {
public static void main(String[] args) {
Dispatcher dispatcher = new Dispatcher();
ArtItems FGartitem = dispatcher.prepareFGitem();
System.out.println("Fragile Items");
FGartitem.showItems();
System.out.println("Total Cost: " +FGartitem.getCost());
}
}
【问题讨论】:
-
您的代码有错误。应该删除“无效价格”。另外,更改您的命名。是艺术品,不是艺术品。您想将艺术品添加到艺术品列表中,例如 artpieces.add(new Artpiece());
-
您在哪里定义了您使用的添加 artpiece.add(void price()) ?你定义的价格函数也返回一个浮点数,你为什么用 void 调用它??
-
另外,添加东西到列表的位置不正确。您只能在另一个方法中或在构造函数或初始化程序块中调用添加项目的方法。我建议用一种方法来做,这对你来说可能是最简单的。还要遵守使用小写变量和大写类的约定。你的“FGartitem”应该叫做“artItems”,或者类似的名字。
-
在 addItem 方法中,您需要将项目添加到列表中,例如“artpiece.add(pottery)”。但是,这可能不起作用,因为您的列表仅接受 Artpiece 类,因此您也需要更改它。
标签: java interface arraylist implementation abstract