因此,如果if(printLibraryNumber.equals(borrowersArray [index] .getLibraryNumber()语句为true),这个方法似乎进入无限循环,我不明白为什么。
public boolean printBorrower(String printLibraryNumber)
{
int index = 0;
boolean isPrinted = false;
while(index < currentIndex)
{
if(printLibraryNumber.equals(borrowersArray[index].getLibraryNumber()))
{
borrowersArray[index].printBorrowerDetails();
isPrinted = true;
}
else
{
index++;
isPrinted = false;
}
}
if(isPrinted == false)
{
System.out.println("Borrower with library number " + printLibraryNumber + " not found.");
}
return isPrinted;
}
答案 0 :(得分:0)
自
以来if(printLibraryNumber.equals(borrowersArray[index].getLibraryNumber()))
语句始终为true
, if 代码块将被执行,&amp; else 块不会。由于您不会更改 if 块中的index
变量,因此您会进入无限循环,因为它是{{ 1}}变量,决定何时停止。
您需要增加任何条件代码块的index
变量 :
index
答案 1 :(得分:0)
因为,当composer dumpautoload
为if(printLibraryNumber.equals(borrowersArray[index].getLibraryNumber()))
时,您不会更改true
。因此,它在下一个循环迭代中测试相同的索引。这是真的。因此无限循环。我想你想要的东西,
index
答案 2 :(得分:0)
这是你的循环条件:
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK);
response.Content = new StreamContent(buffer);
如果是这样的话:
while(index < currentIndex)
然后你这样做:
printLibraryNumber.equals(borrowersArray[index].getLibraryNumber())
这意味着borrowersArray[index].printBorrowerDetails();
isPrinted = true;
和index
都未被修改。所以你的循环条件仍然是正确的。它将继续成真。
为了退出循环,循环条件在某些时候需要为false,或者您需要使用currentIndex
或return
语句。 (或者,好吧,抛出异常或以某种方式导致系统失败。但这会有点激烈。)
答案 3 :(得分:0)
紧接着:
isPrinted = true;
加入
return isPrinted;
我认为应该这样做。祝你好运!