我正在尝试编写一个程序,用户可以通过输入书名来搜索书籍。我用链表存储了一些书。我用字符串参数创建了一个名为findBook的方法。当我要求用户搜索一本书并运行该方法时,它不起作用,但是当我在代码中的findBook方法中输入书名时,它可以工作。以下是我的一些代码不起作用:
init
当我将searchBookTitle方法更改为此方法时,它可以正常工作,但我希望用户输入标题:
init
答案 0 :(得分:2)
您应该按equals()
比较字符串:
if(!isEmpty())
{
while(!theBook.bookName.equals(bookName))
{
if(theBook.next == null)
{
return null;
}
else
{
theBook = theBook.next;
}
}
}
else
{
System.out.println("Our Library is empty");
}
答案 1 :(得分:0)
比较参考文献:
while(theBook.bookName != bookName)
您需要比较字符串值:
while(!theBook.bookName.equals(bookName))
当您搜索book.findBook("Of Mice and Men")
时,它找到了本书,因为编译器对其进行了优化并使用了相同的String引用。如果您要搜索findBook(“The”+“Great Gatsby”),那么就找不到它,因为它会创建一个带有不同引用的新String。