我遇到了二进制搜索的问题。
它第一次工作,但如果用户从菜单中选择此选项,它不适用于不在阵列中的度假村,有时根本不起作用。我不知道为什么它不起作用。我一直在这里阅读不同的线程来尝试弄清楚,但我很难过。
编辑:我想我让它工作了。我取出了整个代码部分并重写了它,查看最终结果的唯一区别是 if else if 语句中的括号
if (resorts[middle].getName().compareTo(getDataFor) > 0)
{
high = middle - 1;
}
else if (resorts[middle].getName().compareTo(getDataFor) < 0)
{
low = middle + 1;
}
else
{
resorts[middle].display();
found = true;
}
感谢您的帮助!
else if (choice == '2')
{
found = false;
while (!found)
{
System.out.print("Which resort would you like data for?: ");
getDataFor = kb.nextLine().toUpperCase();
low = 0;
high = resorts.length;
while (low <= high && !found)
{
middle = (high + low) / 2;
if (resorts[middle].getName().compareTo(getDataFor) > 0)
high = middle - 1;
else if (resorts[middle].getName().compareTo(getDataFor) < 0)
low = middle + 1;
else
{
resorts[middle].display();
found = true;
}
}
if (!found)
System.out.println("Resort not found, please try again.");
}
}