我必须搜索一个凯迪拉克对象数组以显示某个模型的结果,让我们说“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美元以内的汽车的搜索结果,并且肯定会对此有一些指导,因为这两种类型的搜索相对相似。
答案 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 );
}
希望这会对你有所帮助。