Программа не правильно выводит в консоль

Есть список книг. Я хочу вывести список книг заданного автора.

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 + '}';
    }

}
→ Ссылка