【问题标题】:Printing ArrayList [closed]打印 ArrayList [关闭]
【发布时间】:2013-04-30 05:44:35
【问题描述】:

我正在编写一个计算机库存程序,它允许用户定义和显示数组中的一种计算机。目前,阵列中的一台计算机(即阵列中的第一台计算机)已打印,但并非所有特定型号的列表。

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;

【问题讨论】:

  • mlist 是什么? find 是返回所有匹配项,还是只返回第一个匹配项?
  • 什么是item?请提供更多相关部分。
  • 你能发布你得到的输出,以及你期望的输出吗?
  • 请提供有关此问题的更多详细信息。添加类的完整源代码。
  • 你是什么breaking?一个循环?一个开关?顺便说一句,无论项目是否为null,都会始终执行中断。

标签: java list arraylist


【解决方案1】:

目前打印阵列中的一台计算机(即阵列中的第一台计算机),但它并未全部列出特定型号。

这是因为 break 关键字。如果您的代码片段是从循环中获取的,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

【讨论】:

  • 这将要求mlist.find(model); 在第一个循环中找到第一个,在第二个循环中找到第二个,依此类推……这将是……嗯……不寻常。但由于 OP 没有提供更多详细信息,您的解决方案 可能 是正确的。谁知道...
【解决方案2】:

如果mlist.find(model) 有这样的签名:

List<Computer> find(String filter);

并且它确实以List 返回,您应该将item 重命名为items,然后您可以使用

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

当然,前提是你的 Computer 类有 print(String str) 方法,但既然你已经得到了一些打印输出,我认为这是可行的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    相关资源
    最近更新 更多