1

私は、在庫管理、アイテムの削除、削除、および更新を行うプログラムの作成を任されています。StockItem クラスと Stocklist クラスを作成しましたが、StockListTester で行き詰っています。生徒を削除して追加すると、エラーは発生しませんが、「listA」を印刷しようとすると、StockList@6345e044 という出力が表示されます。

これがなぜなのか、もしそうなら、それを解決する方法を知っている人はいますか?

メソッド本体の中に何を入れればよいかわからないため、StockList にフォーマット メソッドをまだ設定していません。何か関係があるのでしょうか?

私のコードは以下にあります。ありがとう

ストックリストコード:

import java.util.*;
public class StockList 
{
public static LinkedList<StockItem> stock
        = new LinkedList<StockItem>();


public StockList() {};


// Adds item to end of stock list
public void addItem(StockItem item) 
{
    StockList.stock.addLast(item);
}


// Removes item identified by productID from stock list
public void deleteItem(String itemID) 
{
    ListIterator itr = stock.listIterator();
while(itr.hasNext())
 {
            StockItem item = (StockItem)itr.next();
    if(item.getitemID().equals(itemID))
    {
                    itr.remove();
        break;
    }
    }
}


// Updates price of existing item
public void updateItemPrice(String itemID, double price) 
{
    ListIterator itr = stock.listIterator();
    while(itr.hasNext())
    {
        StockItem item = (StockItem)itr.next();
        if(item.getitemID().equals(itemID))
        {
            item.setprice(price);
            break;
        }
    }

}


// Updates quantity of existing item
public void updateItemQuantity(String itemID, int quantity) 
{
    ListIterator itr = stock.listIterator();
    while(itr.hasNext())
    {
        StockItem item = (StockItem)itr.next();
        if(item.getitemID().equals(itemID))
        {
            item.setquantity(quantity);
            break;
        }
    }
}


// Updates re-order level of existing item
public void updateReOrderLevel(String itemID, 
int reOrderLevel) 
{
    ListIterator itr = stock.listIterator();
    while(itr.hasNext())
    {
        StockItem item = (StockItem)itr.next();
        if(item.getitemID().equals(itemID))
        {
            item.setreOrderLevel(reOrderLevel);
            break;
        }
    }
}


// Returns formatted representation of the stock list
//  public String formatStockList()
// {…}


// Returns formatted representation of re-order list
// Items are on this list if quantity < reOrderLevel
//  public String formatReOrderList()
//  {…}



}

StockListTester コード:

import java.util.*;
public class StockListTester {
public static void main (String[] args)
{


    StockItem item1 = new StockItem ("MBP", "Macbook Pro", 1300.0, 200, 400);
    StockItem item2 = new StockItem ("TBHD", "TB Hardrive", 40.0, 400, 100);
    StockItem item3 = new StockItem ("W8P", "Windows 8 Premium", 75.99, 5000, 0 );
    //creating 3 new items

    System.out.println("STOCKLIST TESTER");

    System.out.println("Test 1");
    System.out.println("Methods tested: addItem, constructor");
    System.out.println("***************************************\n");

    StockList listA = new StockList();
    listA.addItem(item1);
    listA.addItem(item2);
    listA.addItem(item3);
    //adding my 3 items to a newly created StockList

    System.out.println(listA + "\n");

    System.out.println("Test 2");
    System.out.println("Methods tested: removeItem");
    System.out.println("***************************************\n");

    listA.deleteItem(item1.getitemID());

    System.out.println("Expected:");
    System.out.println("item 2 TBHD TB Hardrive 40.0 400 100 ");
    System.out.println("item 3 W8P Windows 8 Premium 75.99 5000 0 \n");

    System.out.println("Actual:");
    System.out.println(listA);
4

4 に答える 4

2

メソッドをオーバーライドして、必要toString()なものを印刷する必要があります。

そうしない場合は、そのようObject.toString()に印刷するデフォルトの方法を使用します。

于 2013-05-02T14:40:10.497 に答える
0

現時点では、有用な情報を表示しないオブジェクトからデフォルトの .toString() メソッドを取得しています。それをオーバーライドして、オブジェクトをより適切に表すことができます。

テストフレームワークを使用してクラスをテストすることも検討する必要があります。

于 2013-05-02T14:45:17.110 に答える
0

toString()デフォルトのメソッドをオーバーライドする必要があります。toString()オブジェクトの状態を表示する方法を指定します。

于 2013-05-02T14:43:11.483 に答える