0

我必须搜索凯迪拉克对象数组以显示某个模型的结果,比如说“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 美元以内的汽车的搜索结果,并且肯定也会对此提供一些指导,因为这两种类型的搜索相对相似。

4

2 回答 2

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() 将为您处理字符串比较。

于 2012-04-17T03:59:57.610 回答
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 );
        }

希望这会帮助你。

于 2012-04-17T04:06:47.560 回答