Пересмотрите цель вашего оператора if
Ваше условие if решает, соответствует заголовок или нет. Если вы не соответствуете первой книге, вы, скорее всего, захотите продолжить поиск следующих книг. Так что не помещайте break
внутри вашего оператора if , а вместо этого подсчитывайте или собирайте соответствующие книги внутри if.
Помните: Только одна условная ветвь вашего if -construction выполняется, либо , если последовательный блок , либо иначе последовательный блок .
Для прекращения при первом совпадении
Поставьте break;
после if-оператор для ломки l oop только если найдено одно (или более, в соответствии с вашими требованиями) соответствие. Это остановит дальнейшую итерацию.
При умном перепроектировании вы можете даже использовать return
для этого:
public boolean containsInTitle(LibraryData data, String givenArgument) {
for (BookEntry book : data.getBookData()) {
if (book.getTitle().toLowerCase().contains(givenArgument.toLowerCase())) {
System.out.println("Found matching book:" +book.getTitle());
return true; // replacement for break to exit on first match
} else {
System.out.println("Book does not contain term '" + givenArgument + "': " + book.getTitle());
}
}
// if no book matches: default exit is
return false;
}