#java
#java
Вопрос:
Я хотел бы распечатать, что я не могу найти книги, которых нет в массиве, хотя мне нужно только одно предложение «нет данных».
Пожалуйста, дайте мне несколько советов.
Комментарии:
1. Вам нужна
boolean
переменная, которая поможет отслеживать, была ли найдена книга, чтобы вы могли распечатать"no data"
ее один раз после завершения цикла.
Ответ №1:
Вы можете добавить логическое значение, которое обновляется после того, как книга найдена, и как только вы закончите цикл, он напечатает «нет данных», если книга не была найдена, что-то вроде этого:
public static void main(String[] args)
{
Book[] book = {new Book("java", 150, 2016), new Book("python", 100, 2019), new Book("javascript", 200, 2018)};
Scanner in = new Scanner(System.in);
System.out.print("insert book title >> ");
String title = in.nextLine();
boolean found = false;
for (Book b : book)
{
if (title.equals(b.getTitle()))
{
System.out.println(b.toString());
found = true;
break;
}
}
if (!found) System.out.println("no data");
}
Ответ №2:
Вы могли бы сделать это также способом Java 8:
public static void main(String[] args) {
Book[] book = {new Book("java", 150, 2016), new Book("python", 100, 2019), new Book("javascript", 200, 2018)};
Scanner in = new Scanner(System.in);
System.out.print("insert book title >> ");
String title = in.nextLine();
Book b = Arrays.stream(book).filter(book1 -> book1.getTitle().equals(title)).findAny().orElse(null);
if (null == b) {
System.out.println("no data");
} else {
System.out.println(b);
}
}