2013-05-02 4 views
1

Мне поручено создать программу, которая управляет запасами, удалением, удалением и обновлением элементов. Я написал класс StockItem и класс Stocklist, однако я застрял в StockListTester. Когда я удаляю и добавляю учеников, я не получаю никаких ошибок, однако всякий раз, когда я пытаюсь напечатать свой «listA», я получаю вывод: StockList @ 6345e044.неожиданный вывод из программы связанного списка java

Кто-нибудь знает, почему это так, и если да, то как его решить?

Я еще не установил методы своего формата в 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); 

ответ

2

Override toString() метод в классе StockList и StockItem. В StockList, вы можете сделать так:

public String toString() { 
    return Arrays.toString(stock.toArray()); 
} 
2

Вы должны переопределить toString() метод печатать все, что вы хотите.

Если вы этого не сделаете, вы используете метод по умолчанию Object.toString(), который печатает that way.

0

Вам необходимо переопределить метод по умолчанию toString(). В toString() укажите, как вы хотите отобразить состояние объекта.

0

В настоящий момент вы получаете метод по умолчанию .toString() от объекта, для которого не отображается какая-либо полезная информация. Вы можете переопределить его, чтобы он представлял ваш объект лучше.

Вам следует рассмотреть возможность использования тестовой рамки для тестирования ваших классов.