2017-12-02 221 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