2017-12-02 222 views
0

我有需要顯示輸入到系統中,我有現在的方法是什麼投標歷史的方法是:返回的多個值的ArrayList

@Override 
public String displayHistory() { 
    String bidder = toString(); 
    if (this.bids.isEmpty()) { 
     return bidder + " = no bids"; 
    } 
    for (int i = 0; i < this.bids.size(); i++) { 
     bidder = "\n" + this.bids.get(i).toString() + "\n"; 
    } 
    return toString() + " = " + bidder; 
} 

toString方法:(正確)

@Override 
public String toString() { 
    return this.productId + ": " + this.productName; 
} 

我需要做什麼方法是在經過我的測試類的表單打印出來:

測試類代碼:

assertEquals("1: teddy = \n"+"J***e bid £7.0\n"+"S***a bid £5.0\n",product1.displayHistory()); 

1:玩具= \ n Ĵ***Ë出價£7.00 \ n 小號***出價$ 5.00 \ n

但目前我的方法是印刷這樣的:

1 :teddy = \ n J *** e bid£7.00 \ n blank \ n

但是,當我調試程序並檢查數組列表時,第二個出價是在裏面但是沒有用for循環顯示。

有沒有辦法讓我可以改變這個循環,以便打印出列表中所有數組列表的值,而不僅僅是輸入列表中的最後一個值?我假設它必須使用循環系統,但可能不是?任何幫助將不勝感激。

回答

0

在你的循環:

for (int i = 0; i < this.bids.size(); i++) { 
    bidder = "\n" + this.bids.get(i).toString() + "\n"; 
} 

你每次分配當前的一個投標bidder變量。相反,你應該添加像bidder += ...,但是並列一個字符串是更好的喲StringBuilder.append()

+0

非常感謝,我已經設法現在排序它。愚蠢的錯誤從我身上 – Newbie1998