Quote Originariamente inviata da Rudie Visualizza il messaggio
codice:
        while (!(brani[c+1].equals(null))) { //linea 98
Innanzitutto questo equals non ha granché senso (anzi quasi nulla). Innanzitutto bisogna vedere se nella classe Brano hai ridefinito equals oppure no. Se non l'hai fatto, resta il equals ereditato da Object, che si basa solo sul confronto dei reference dei due oggetti (il this e l'argomento di equals).

Se è il equals di Object, brani[c+1].equals(null) in teoria vorrebbe concettualmente dire: true se brani[c+1] è null. Ma attenzione: se brani[c+1] è null, allora NON potresti invocarci equals! Ed è questo che non ha senso.

Inoltre la specifica di equals dice chiaramente che con x.equals(null), equals deve (dovrebbe) restituire sempre false.

Passiamo oltre: se hai un Brano[] istanziato di una capacità inizialmente maggiore di quanto subito serve, la cosa più semplice e logica sarebbe quella di tenere una variabile che indica il numero "logico" di elementi (questo è ciò che fanno Vector/ArrayList ad esempio).
Se invece intendevi qualcosa del tipo: gli elementi terminano quando nell'array c'è un null .... beh sì, si può tecnicamente fare ma è più complicato da gestire e testare.

Consiglio: ripensa un pochino la gestione dell'array.