Программа не правильно выводит в консоль
Есть список книг. Я хочу вывести список книг заданного автора.
List<Book> books = new ArrayList<>();
books.add(new Book(1, "Voina i mir", "Tolstoi", "istoria", 1789, 1325, 175, 12));
books.add(new Book(2, "Voscresenie", "Tolstoi", "roman", 1976, 1894, 230, 15));
books.add(new Book(3, "Prestuplenie i nacazanie", "Dostoevschii", "istoria", 1876, 1264, 380, 21));
books.add(new Book(4, "Idiot", "Dostoevschii", "roman", 1981, 1345, 250, 16))
books.add(new Book(5, "Geroi nasego vremeni", "Lermontov", "roman", 1977, 120, 100, 10));
for (Book book : books) {
Scanner aut = new Scanner(System.in);
System.out.println("Author:");
aut.nextLine();
if (aut.equals(book.author)) ;
System.out.println(book.title);
}
Данная программа не выводит правильно на консоль, так как она выводит все книги.
Ответы (3 шт):
Автор решения: dmtr
→ Ссылка
if (aut.hasNextLine())
String author = aut.nextLine();
if (author.equals(book.author))
...
Вам нужно получать содержимое считываемой строки с автором для корректного сравнения.
Автор решения: Alexander Chernin
→ Ссылка
Scanner aut = new Scanner(System.in);
String author = aut.nextLine();
for (Book book : books) {
if (author.equals(book.author))
System.out.println(book.title);
}
Автор решения: Дмитрий
→ Ссылка
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Library {
public static void main(String[] args) {
List<Book> books = new ArrayList<>();
books.add(new Book(1, "Voina i mir", "Tolstoi", "istoria", 1789, 1325, 175, 12));
books.add(new Book(2, "Voscresenie", "Tolstoi", "roman", 1976, 1894, 230, 15));
books.add(new Book(3, "Prestuplenie i nacazanie", "Dostoevschii", "istoria", 1876, 1264, 380, 21));
books.add(new Book(4, "Idiot", "Dostoevschii", "roman", 1981, 1345, 250, 16));
books.add(new Book(5, "Geroi nasego vremeni", "Lermontov", "roman", 1977, 120, 100, 10));
Scanner aut = new Scanner(System.in);
System.out.println("Author:");
String author = aut.nextLine();
//вывести можно так
for (Book book : books) {
if (author.equals(book.getAuthor())) {
System.out.println(book);
}
}
//или так , если функционально
// books.stream()
// .filter(book -> author.equals(book.getAuthor()))
// .forEach(System.out::println);
}
}
class Book {
private final Integer id;
private final String title;
private final String author;
private final String style;
private final Integer year;
private final Integer paheNumber;
private final Integer someData1;//не знаю, как назвать
private final Integer someData2;////не знаю, как назвать
public Book(Integer id, String title, String author, String style, Integer year,
Integer paheNumber, Integer someData1, Integer someData2) {
this.id = id;
this.title = title;
this.author = author;
this.style = style;
this.year = year;
this.paheNumber = paheNumber;
this.someData1 = someData1;
this.someData2 = someData2;
}
public Integer getId() {
return id;
}
public String getTitle() {
return title;
}
public String getAuthor() {
return author;
}
public String getStyle() {
return style;
}
public Integer getYear() {
return year;
}
public Integer getPaheNumber() {
return paheNumber;
}
public Integer getSomeData1() {
return someData1;
}
public Integer getSomeData2() {
return someData2;
}
@Override
public String toString() {
return "Book{" + "id=" + id + ", title=" + title + ", author=" + author + ", style=" + style + ", year=" + year
+ ", paheNumber=" + paheNumber + ", someData1=" + someData1 + ", someData2=" + someData2 + '}';
}
}