我的程序中有一个不会达到哨兵值的 while 循环。该程序基本上读入一个包含一个字符串、一个 int 和一个 double 的数据库,然后循环返回。我的问题是它似乎没有读入哨兵,然后发生了无限循环。我已经尝试解决这个问题好几个小时了,所以任何帮助都会非常有帮助。示例输入如下所示,其中 EndSearchKeys 等于 SECSENT。
还假设调用的任何方法都不是问题,因为我已经删除了它并再次测试。
雷克萨斯 2005 23678.0
福特 2001 7595.0
本田 2004 15500.0
EndSearchKeys
while(scan.hasNext())
{
if(carMake.equals(SECSENT))
{
break;
}
if(scan.hasNextInt())
{
carYear = scan.nextInt();
}
else
{
System.out.println("ERROR - not an int");
System.exit(0);
}
if(scan.hasNextDouble())
{
carPrice = scan.nextDouble();
}
else
{
System.out.println("ERROR - not a double");
System.exit(0);
}
Car key = new Car(carMake, carYear, carPrice);
// Stores the output of seqSearch in pos.
// If the debug switch is on, then it prints these statements.
if(DEBUG_SW == true)
{
System.out.println("Search, make = " + key.getMake());
System.out.println("Search, year = " + key.getYear());
System.out.println("Search, price = " + key.getPrice());
}
System.out.println("key =");
System.out.println(key);
pos = seqSearch(carArr, count, key);
if(pos != -1)
{
System.out.println("This vehicle was found at index = " + pos);
}
else
{
System.out.println("This vehicle was not found in the database.");
}
if(scan.hasNext())
{
carMake = scan.next();
}
else
{
System.out.println("ERROR - not a String");
System.exit(0);
}
}