我的代码的目标是,如果书名包含给定的参数,则打印出书名。提供了这些测试,并通过了除此给定输入之外的所有测试:预期的输出是“ Harry”,但是我得到的实际输出是“未找到搜索词:Harry”。因此,第一个if陈述对于Harry而言并没有中断。我一直在寻找我做错了什么却找不到的地方,如何解决这个问题。这是我的代码:
public void execute(LibraryData data) {
for (BookEntry book : data.getBookData()) {
if (book.getTitle().toLowerCase().contains(givenArgument.toLowerCase())) {
System.out.println(book.getTitle());
break;
} else {
System.out.println("No hits found for search term: " + givenArgument);
break;
}
}
[在使用其他时,您不必中断它
您的代码仅检查第一本书,因为无论哪种情况,您break
都循环外。必须将打印“ No hits”的代码移到循环外,因为直到列表完全迭代后您才知道是否有Hits。
要知道是否发现了热点,您需要一个boolean
变量来记住这一点。
boolean found = false;
for (BookEntry book : data.getBookData()) {
if (book.getTitle().toLowerCase().contains(givenArgument.toLowerCase())) {
System.out.println(book.getTitle());
found = true;
break;
}
}
if (! found) {
System.out.println("No hits found for search term: " + givenArgument);
}