Проблема с циклом foreach для коллекции

Есть некоторая коллекция bookcase:

package BookManager;

import java.util.ArrayList;
import java.util.Scanner;

public class BookCase {
    ArrayList<Book> books;

BookCase() {
    books = new ArrayList<>();
}

void addBook(String bookName, String author) {
    Book book = new Book(bookName, author);
    books.add(book);

}

ArrayList<Book> showBooks() {
    System.out.println("Список книг: ");
    return books;
}

ArrayList<Book> findBook(String input) {
    ArrayList<Book> findBookList = new ArrayList<>();
    for (Book book : books) {
        if ((input.equals(book.name)) | (input.equals(book.writer))) {
            findBookList.add(book);
        }
    }
    return findBookList;
}

void showBookInfo(String input) {
    ArrayList<Book> showInfoBook = findBook(input);
    for (Book book : showInfoBook) {
        System.out.println("Название книги: " + book.name + " Писатель: " + book.writer);
    }
}

void delBook(String input) {
    for (Book book : books) {
        if ((input.equals(book.name)) | (input.equals(book.writer))) {
            books.remove(book);
            System.out.println("Книга удалена");
            break;
        } else {
                System.out.println("Нет такой книги.");
                break;
            }
        }
    }
}

Другой класс:

package BookManager;

import java.util.ArrayList;
import java.util.Scanner;

public class Menu {
    Scanner scanner;
    BookCase bookCase;

    public Menu(BookCase bookCase) {
        scanner = new Scanner(System.in);
        this.bookCase = bookCase;
    }

    void offerMenu() {
        int userInput;
        do {
            listOptions();
            System.out.println();
            System.out.println("Выберите опцию:");
            System.out.println();
            userInput = scanner.nextInt();
            scanner.nextLine();
            processing(userInput);
        }
        while (userInput() != 7);
        System.out.println("Работа завершена.");
    }
    
        int userInput() {
            int userInput;
    
            while (true) {
                if (scanner.hasNextInt()) {
                    userInput = scanner.nextInt();
                    scanner.nextLine();
                    break;
                } else {
                    scanner.nextLine();
    
                }
            }
            return userInput;
        }
    
        String inputBookTitleAuthor() {
            System.out.println("Введите автора/название: ");
            String userStringInput = scanner.nextLine();
            return userStringInput;
        }
    
        void listOptions() {
            System.out.println("Выберите опцию менеджера книг: ");
            System.out.println("1 -

 посмотреть список книг");
        System.out.println("2 - поиск книги");
        System.out.println("3 - информация по книге");
        System.out.println("4 - добавить книгу");
        System.out.println("5 - удалить книгу");
        System.out.println("0 - для выхода в основное меню");
        System.out.println("7 - выход");
    }


    private void processing(int userInput) {

        switch (userInput) {
            case 1:
                menuShowBooks();
                break;
            case 2:
                menuFindBook();
                break;
            case 3:
                bookInfo();
                break;
            case 4:
                menuAddBook();
                break;
            case 5:
                menuDelBook();
                break;
            case 0:
                break;
            case 7:
                return;
        }
    }

    void bookInfo() {
        System.out.println("Введите название/автора книги для поиска: ");
        String bookName = scanner.nextLine();
        bookCase.showBookInfo(bookName);
    }

    void menuFindBook() {
        System.out.println("Введите название/автора книги для поиска: ");
        String bookName = scanner.nextLine();
        System.out.println(bookCase.findBook(bookName));
    }

/**
 * Вопрос в работе метода ниже
 * метод выводит список книг в формате списка, т.е. в строку
 * [Автор 'пушкин', наименование книги: ' сказки'}, Автор 'непушкин', наименование книги: ' несказки'}, Автор 'гоголь', наименование книги: ' нос'}]
 */
void menuShowBooks() {
    for (BookCase book : bookCase ) {
        System.out.println(book);
    }
}

void menuAddBook() {
    System.out.println("Введите автора: ");
    String bookName = scanner.nextLine();
    System.out.println("Введите название:");
    String author = scanner.nextLine();
    bookCase.addBook(bookName, author);
    System.out.println("Добавлено в библиотЭку");
}



 void menuDelBook() {
        System.out.println("Введите название/автора книги для удаления: ");
        String bookName = scanner.nextLine();
        bookCase.delBook(bookName);
    }
}

Вопрос:

Каких и где строк не хватает, чтобы в методе menuShowBooks с помощью foreach вывести все объекты ПОСТРОЧНО Сейчас в данном методе bookcase подчеркнут красным, но что за ошибка я не понимаю. Точнее я догадываюсь, что это переменная НЕмассива, но как исправить пока не понимаю.


Ответы (1 шт):

Автор решения: Komdosh

bookCase в вашем случае это экземпляр класса, у которого имеется переменная books.

for (Book book : bookCase.books) {
    System.out.println(book);
}
→ Ссылка