1

Java は初めてで、配列オブジェクトをリストに追加する際に問題があります。既にこのフォーラムのトピックを確認しましたが、私の問題に似たものを見つけることができません。

販売するアイテムに関する情報を保存する Item というクラスを既に作成しており、id、desc、cost、quantity の 4 つのインスタンス変数があります。そして、メイン メソッドを持つ Sales クラスがあります。基本的に私がやりたいことは、Item クラスからオブジェクトの配列を作成し、データをハードコーディングすることです (これは既に作成済みですが、正しく作成したかどうかはわかりません)。

ArrayList を作成しました。ここでやりたいことは、作成した配列から 5 つのオブジェクトをリストに追加することです。

これは私のアイテムクラスです

public class Item {


    private String itemID;
    private String desc;
    private double cost;
    private int quantity;

    public Item() {
        itemID="";
        desc="";
        cost=0;
        quantity=0;
    }

    public Item(String id, String d, double c, int q) {
        itemID = id;
        desc = d;
        cost = c;
        quantity = q;

    }

    /**
     * @return the itemID
     */
    public String getItemID() {
        return itemID;
    }

    /**
     * @param itemID the itemID to set
     */
    public void setItemID(String itemID) {
        this.itemID = itemID;
    }

    /**
     * @return the desc
     */
    public String getDesc() {
        return desc;
    }

    /**
     * @param desc the desc to set
     */
    public void setDesc(String desc) {
        this.desc = desc;
    }

    /**
     * @return the cost
     */
    public double getCost() {
        return cost;
    }

    /**
     * @param cost the cost to set
     */
    public void setCost(double cost) {
        this.cost = cost;
    }

    /**
     * @return the quantity
     */
    public int getQuantity() {
        return quantity;
    }

    /**
     * @param quantity the quantity to set
     */
    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return "Item [itemID=" + itemID + ", desc=" + desc + ", cost=" + cost
                + ", quantity=" + quantity + "]";
    }



}

そして私のセールスクラス:

import java.util.*;

public class Sales {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int i;

        Item[] items = new Item[5];


        for(i = 0; i < items.length; i++)
        {
            items[i]= new Item(); // create array 
        }

        //hard-coded values of id, desc, cost, qty
        items[0].setItemID("PN250");
        items[1].setItemID("ER100");
        items[2].setItemID("PP150");
        items[3].setItemID("MK200");
        items[4].setItemID("PN300");

        items[0].setDesc("Pen");
        items[1].setDesc("Eraser");
        items[2].setDesc("Paper");
        items[3].setDesc("Marker");
        items[4].setDesc("Pen");

        items[0].setCost(1.50);
        items[1].setCost(1.25);
        items[2].setCost(3.75);
        items[3].setCost(2.50);
        items[4].setCost(2.25);

        items[0].setQuantity(0);
        items[1].setQuantity(175);
        items[2].setQuantity(310);
        items[3].setQuantity(75);
        items[4].setQuantity(450);

        double total = 0;
        for(Item d : items)
        {

            System.out.print(d.getItemID());
            System.out.print("\t" + d.getDesc());
            System.out.print("\t" + d.getCost());
            System.out.println("\t" + d.getQuantity());
        }

        List<Item> obj;
        obj = new ArrayList<Item>();

    }
}
4

3 に答える 3

4

次のようにして、配列をリストに追加できます。

obj.addAll(Arrays.asList(items));
于 2012-08-05T22:24:13.917 に答える
1

関数の先頭で配列を作成する代わりに、arrayList を作成し、put メソッドを使用してそれにオブジェクトを追加します。

また、各属性のセッターを呼び出す代わりに、オブジェクトを不変にし、それらの属性をコンストラクターに渡すことを検討する必要があります。

于 2012-08-05T22:32:24.440 に答える
1

以下を使用できます。

for (i = 0; i < items.length; i++)
{
    obj.add(items[i]);
}

しかし、アイテムが作成されて入力されたらすぐにアイテムを追加してみませんか?

于 2012-08-05T22:23:28.077 に答える