import java.util.Scanner;

class Biblio {

    public static void main(String[] args) {
        Libreria libreria = new Libreria();

        // Engadir libros á libreria creando variables para cada libro
        // ... pouco eficinte.
        Libro l1 = new Libro("Gargantúa Pantagruel", "Rabelais", "Copyleft");
        Libro l2 = new Libro("Cronicas da Dragonlance", "Weis & Hickman", "Wizards of the Coast");
        Libro l3 = new Libro("Gilgamesh", "Descoñecido", "Copyleft");

        libreria.engadirLibro(l1);
        libreria.engadirLibro(l2);
        libreria.engadirLibro(l3);

        System.out.println();
        System.out.println("Listado libros non prestados: ");
        System.out.println("-----------------------------");
        libreria.listarLibros(false);

        // Engadir libros á libreria 'dinámicamete'
        // ... máis eficinte.
        // (o ideal sería nunha función, mais para exemplificación
        //  mellor aquí.)
        Scanner teclado = new Scanner(System.in);
        String titulo;
        String autor;
        String editorial;
        Libro libro;

        System.out.println();
        System.out.println("-------------------------");
        System.out.println("Para acabar de introduzir");
        System.out.println("entre un título baldeiro.");
        System.out.println("-------------------------");
        System.out.print("Titulo? ");
        titulo = teclado.nextLine();
        while(!titulo.isEmpty()) {
            System.out.print("Autor? ");
            autor = teclado.nextLine();
            System.out.print("Editorial? ");
            editorial = teclado.nextLine();

            // creamos un novo libro e logo engadimos ese libro
            // á librería.
            libro = new Libro(titulo, autor, editorial);
            libreria.engadirLibro(libro);

            // ^..NOTA: na vez de usar unha variable de tipo
            //          Libro podería facerse directamente
            //          deste xeito:
            // libreria.engadirLibro(new Libro(titulo, autor, editorial));

            System.out.println();
            System.out.print("Titulo? ");
            titulo = teclado.nextLine();
        }

        System.out.println();
        System.out.println("Listado libros non prestados: ");
        System.out.println("-----------------------------");
        libreria.listarLibros(false);
    }
}
class Libro {
    private String titulo;
    private String autor;
    private String editorial;
    private boolean prestado;

    Libro(String titulo, String autor, String editorial) {
        this.titulo = titulo;
        this.autor = autor;
        this.editorial = editorial;
        this.prestado = false;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public String getAutor() {
        return autor;
    }

    public void setAutor(String autor) {
        this.autor = autor;
    }

    public String getEditorial() {
        return editorial;
    }

    public void setEditorial() {
        this.editorial = editorial;
    }

    public boolean enPrestamo() {
        return prestado;
    }

    public void devolto() {
        prestado = false;
    }

    public void prestado() {
        prestado = true;
    }
}
import java.util.Iterator;
import java.util.ArrayList;

class Libreria {
    ArrayList<Libro> libreria;

    Libreria() {
        libreria = new ArrayList<Libro>();
    }

    public void engadirLibro(Libro libro) {
        libreria.add(libro);
    }

    public void prestarLibro(String titulo) {
        Iterator<Libro> it = libreria.iterator();
        Libro libro;

        while(it.hasNext()) {
            libro = it.next();
            if (libro.getTitulo().equals(titulo)) {
                if (libro.enPrestamo()) {
                    System.out.println("Libro xa en prestamo.");
                } else {
                    libro.prestado();
                    System.out.println("Libro posto en estado de prestamo.");
                }
                break;
            }
        }
    }

    public void recibirLibro(String titulo) {
        Libro libro;

        for (int index = 0; index < libreria.size(); index++) {
            libro = libreria.get(index);
            if (libro.getTitulo().equals(titulo)) {
                if (libro.enPrestamo()) {
                    libro.devolto();
                    System.out.println("O libro foi devolto.");
                } else {
                    System.out.println("O libro non estaba en prestamo.");
                }
                break;
            }
        }
    }

    public void listarLibros(boolean enPrestamo) {
        Iterator<Libro> it = libreria.iterator();
        Libro libro;

        while(it.hasNext()) {
            libro = it.next();

            if(libro.enPrestamo() == enPrestamo) {
                System.out.printf("%-25s - %15s - %10s\n", libro.getTitulo(), libro.getAutor(), libro.getEditorial());
            }
        }
    }
}