1

質問全体を貼り付けさせてください。そして、私の英語が少し苦手だと考えてください。

質問: 注文された商品に基づいて必要な適切な梱包で商品を発送するために受け取った販売注文に従う発送システム。ショップがアートに富んだアンティーク アイテムを販売しているとします。これらのアート アイテムは、「FRAGILE」アイテムに分類できます。壊れやすい商品は「陶器」と「ガラス製品」の2種類。各アイテムは、適切なパッケージにバンドルする必要がありました。結束は「BubbleWrap」と「Cushioning」の2種類。壊れやすいアイテムには気泡緩衝材が使用され、壊れにくいアイテムには「緩衝材」が使用されます。次に、アートピースの ArrayList を持つ ARTITEM クラスと Dispatcher を作成して、壊れやすいものとして識別できるさまざまなタイプのアートアイテム オブジェクトをパックする必要があります。Salesorder は Dispatcher を使用して商品を梱包するデモ クラスですか?

インターフェイス Artpiece.java があります。ArtItems.java クラスがあり、ArtItems に Artpiece.java オブジェクトを実装しました。

私の問題は、Artpeice から ArrayList にアイテムを追加する必要があることです。Artpiece には基本的に壊れやすいアイテムがあります。example[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()); 
   } 
} 
4

2 に答える 2

0

貢献してくれてありがとう。私自身の調査を行った後、私は自分で質問を解決しました:私が投稿した回答を参照でき、100% 機能しています.コーディングは以下のとおりです:

//Artpiece.java
interface Artpiece{
    public String name();
    public Bundling bundling();
    public float price();

}

//BubbleWrap.java
public class BubbleWrap implements Bundling{
    public String bundle() {
        return "BubbleWrap";
    }
}

//Bundling.java
interface Bundling{
    public String bundle();
}

//Cushioning.java
public class Cushioning implements Bundling{
    //Override
    public String bundle() {
        return "Cushioning";
    }
}

//FGItem.java
abstract class FGItem implements Artpiece{
    public Bundling bundling() {
        Bundling b = new BubbleWrap();
        return b;
    }
    public abstract float price();

}

//GlassWaare.java
public class GlassWare extends FGItem{

    //Override
    public String name() {

        return "GlassWare";
    }

    //Override
    public float price() {

        return 160;
    }

}

//Pottery.java
public class Pottery extends FGItem{

    //Override
    public String name() {

        return "Pottery";
    }

    //Override
    public float price() {

        return 25;
    }

}

//ArtItems.java
import java.util.ArrayList;
public class ArtItems implements Artpiece{

    float sum = 0;
    ArrayList<Artpiece> item = new ArrayList<Artpiece>();


    //Override
    public String name() {

        return name();
    }

    //Override
    public Bundling bundling() {

        return bundling();
    }

    //Override
    public float price() 
    {
        return price();
    }

    public float getCost()
    {
        for(int i=0; i<item.size(); i++)
        {
            Artpiece art = item.get(i);
            sum += art.price();
        }
        return sum;

    }

    public void addItem(Artpiece artpiece) 
    {

        item.add(artpiece);
    }

    public void showItems() 
    {
        for(int i=0; i<item.size(); i++)
        {
            Artpiece art = item.get(i);
            System.out.println("Item: " + art.name() + " Packaging " + art.bundling().bundle() + ", Price: " + art.price());
        }

    }



}

//Dispatcher.java

public class Dispatcher { 
      public ArtItems prepareFGitem(){ 
      ArtItems artitems = new ArtItems(); 
      artitems.addItem(new Pottery()); 
      artitems.addItem(new GlassWare());
          return artitems;
      }


}

//Salesorder.java  This is the driver class
 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()); 


   } 
} 
于 2013-07-14T09:59:21.143 に答える
0

なぜ ArtItems は Artpiece を実装するのですか? 論理的には、処理する各アイテムは、アイテムのコレクションを脅かす ArtItems ではなく、ArtPiece を実装する必要があります。倉庫が棚を実装すると言っているようなものです。

arraylist に追加するときは、タイプ Artpiece (または Artpiece を実装するクラス) のアイテムを追加する必要があります。add メソッド内にメソッドを作成していますが、これは実際には機能しません。artpiece.add(price()) はもっと理にかなっていますが、 price() が実際にアートピースを返さない限り、それでも機能しません。論理的にはそうすべきではありません。

于 2013-07-08T15:47:43.147 に答える