Book[] libro = new Book[50];
Questa istruzione crea un array in grado di contenere 50 oggetti Book. Nessuna delle posizioni contiene ancora alcunché.
Da qui la NullPointerException.
Se vuoi usare la posizione 0, allora dovrai prima assegnargli un oggetto Book:
libro[0] = new Book( ... ); // al posto dei puntini vanno passati gli eventuali parametri (se necessario)
Ciao.![]()