Non si capisce in quale ordine vengano richiamati quei metodi, quindi vado ad intuito.
Per prima cosa verrà richiamato il metodo start()... il quale pone a null tutti gli elementi dell'array.
Poi verrà richiamato addlibro(). E questo legge dall'utente i dati e poi fa questa cosa qua:

codice:
if((l[i].getautore().equals(autore))&&(l[i].getgenere().equals(genere))&&(l[i].gettitolo().equals(nome)))

Peccato che l[i] sia null, quindi non ci puoi invocare proprio nulla (getautore(), getgenere(), gettitolo(), ecc NON li puoi invocare se l'oggetto è nullo)... e ti solleverà una bella NullPointerException. Tra l'altro vai a istanziare l'oggetto nell'else... il che non ha nessun senso: PRIMA si deve istanziare l'oggetto, e solo DOPO ci puoi invocare sopra dei metodi.


Devi rivedere la logica di funzionamento.


Ciao.