2013-05-06 172 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)方法,但由于你已经有一些打印的输出,我认为这是有效的。