循环搜索数组,打印多个结果

时间:2012-04-17 03:53:49

标签: java arrays loops

我必须搜索一个凯迪拉克对象数组以显示某个模型的结果,让我们说“Escalade”,我无法确定我的代码特别需要放置的位置,以便将结果打印在控制台屏幕。当我尝试打印我现在所拥有的东西时,我一直陷入困境。关于我的程序的其他所有工作都在工作,我只需要能够在控制台屏幕上显示多个结果。

这是我的代码:

    while( response != null )
    {
      if( response.length() > 0 )
      {
        count = 0;
        found = false;
        while( count < data.length && data[count] != null && !found )
        {
          item = data[count].getModel();
          if( item.equalsIgnoreCase( response ) )
          {

            found = true;
          }
          else{
            count++;
          }
          message = "Model:  " + data[count].getModel() + "\n" +
                    "Stock Number:  " + data[count].getStockNum() + "\n" +
                    "Color            :  " + data[count].getColor() + "\n" +
                    "Price  :  " + data[count].getPrice();
          System.out.print( message );
        }

        if( !found )
          message = "Model not found in array.";
    }
    }
    response = JOptionPane.showInputDialog( prompt );
  }

此外,搜索的第二部分是显示用户输入的3000美元以内的汽车的搜索结果,并且肯定会对此有一些指导,因为这两种类型的搜索相对相似。

2 个答案:

答案 0 :(得分:1)

您没有显示所有代码,但如果您处于无限循环中,请查看循环条件。看起来您正在检查response是否为空,但response从未在循环中分配,因此一旦进入,您将被卡住。

此外,count可能应该会一直增加,因为你在循环中检查它。当找到一个时,你不会增加它,所以循环永远不会中断。

我建议从头开始再次编写这段代码。我认为你可以简化你的条件,让自己(和评分者)更容易理解。

我会帮你的。

do {
    response = JOptionPane.showInputDialog( prompt );
    for (int i=0; i < data.length; i++) {
        // do stuff with data[i] here
    }
} while(response != null);

我认为do-while循环对于检查用户输入是有意义的。如果你循环遍历任何元素,for循环是有意义的。从这里你可以检查用户输入,不需要计算长度,因为equalsIgnoreCase()将为你处理字符串比较。

答案 1 :(得分:0)

如果匹配或找到模型,你的内循环永远不会过来。所以在这种情况下,循环变为无限。你需要增加内循环中的计数。所以这个增量应该独立发生,你可以安全地完成内部循环。但是,在找到模型后,您可以轻松地执行此操作以打破内部循环,并在此之后显示其信息。

while( count < data.length && data[count] != null && !found )
        {
          item = data[count].getModel();
          if( item.equalsIgnoreCase( response ) )
          {

            found = true;
            break;
          }
          else{
            count++;
          }
          message = "Model:  " + data[count].getModel() + "\n" +
                    "Stock Number:  " + data[count].getStockNum() + "\n" +
                    "Color            :  " + data[count].getColor() + "\n" +
                    "Price  :  " + data[count].getPrice();
          System.out.print( message );
        }

希望这会对你有所帮助。