2013-05-06 106 views
-7

我正在寫一個計算機股票程序,它允許用戶定義和顯示一個數組中的一種計算機。此刻打印一個數組中的一臺計算機(例如,第一個數組),但並不是所有特定模型的列表。打印ArrayList

model = Console.askString("A or B ? "); 
item = mlist.find(model); 
if (item == null) 
    System.out.println("Cannot find " + model); 
else 
    item.print("Laptop details..."); 
break; 
+0

什麼是'mlist'? 'find'會返回所有匹配,還是隻返回第一個? – 2013-05-06 13:00:05

+0

什麼是'item'?請提供更多相關部分。 – Maroun 2013-05-06 13:00:09

+3

你可以發佈你得到的輸出和你期望的輸出嗎? – 2013-05-06 13:01:40

回答

2

在從陣列(e.i.first從數組)的時刻與一個計算機被印刷,但它不會特定型號的所有列表。

這是因爲break關鍵字。如果你的代碼snipplet是從一個循環中取出的,break將在if語句後執行,然後會跳出循環,整個數組將不會被打印。這將導致你所描述的行爲,「首先從陣列打印」

model = Console.askString("A or B ? "); 
item = mlist.find(model); 
if (item == null) 
    System.out.println("Cannot find " + model); 
else 
    item.print("Laptop details..."); 
break; // remove this 
+0

需要'''mlist.find(模型);'''在第一個循環中找到第一個,在第二個中找到第二個等等......那就是......呃......不尋常的。但由於OP沒有提供更多細節,所以您的解決方案*可能是正確的。誰知道... – luksch 2013-05-06 13:18:23

1

如果該mlist.find(model)有這樣的簽名:

List<Computer> find(String filter); 

,它確實有返回List您應該重命名itemitems,然後你可以遍歷這些與

for (Computer computer : items){ 
    computer.print("Laptop details..."); 
} 

那是當然只有當你的計算機類有print(String str)方法,但由於你已經有一些打印的輸出,我認爲這是有效的。