Ciao a tuttidomani ho un esame di programmazione e sto impazzendo su un programma che viene compilato esattamente poi quando lo eseguo mi ritrovo il seguente errore quando voglio ricercare un determinato titolo, oppure quando voglio stampare i titoli inseriti (preciso l'inserimento avviene in modo corretto) : :master:
Exception in thread "main" java.lang.NullPointerException
at Libreria.ricerca(Libreria.java:233)
at Libreria.main(Libreria.java:109)
Vi riporto il codice se potete darmi una mano
import java.util.*;
public class Libreria{
static Scanner tastiera = new Scanner(System.in);
//(1) Dichiarare e inizializzare una variabile statica numeroLibri per tener traccia
//del numero di Libri presenti nell'array; numeroLibri deve essere incrementata ogni volta
//che si inserisce un nuovo Libro e indica la prima posizione libera dell'array qui sotto.
public static int numeroLibri = 0;
public static void main(String [] args){
int scelta;
//(2) Dichiarare un array di oggetti Libro, chiamato mieiLibri,
//e inizializzarlo alla lunghezza scelta dall'utente.
int dimensione = UtilLeggiDaTastiera.leggiInteroPositivoDaTastiera( "Lunghezza array");
Libro[] mieiLibri = new Libro[dimensione];
do {
System.out.println(" Menu` di Gestione della mia Libreria");
System.out.println("1) Inserimento nuovo Libro");
System.out.println("2) Ricerca di un Libro");
System.out.println("3) Stampa Informazioni tutti i libri");
System.out.println("4) Esci");
System.out.println("");
System.out.println("Digita il numero dell'operazione desiderata seguito da invio:");
//(3) Mettere un controllo per verificare che l'utente inserisca un intero.
while(!tastiera.hasNextInt()) {
System.out.print("Inserire un intero: ");
tastiera.next();
}
scelta = tastiera.nextInt();
tastiera.nextLine(); // per consumare il "\n" residuo
if (scelta == 1) {
inserisci(mieiLibri);
}
if (scelta == 2) {
System.out.println("Inserisci titolo Libro");
String titolo = tastiera.next();
Libro libro = ricerca(mieiLibri, titolo);
if(libro == null)
System.out.println("Libro non trovato");
else
System.out.println(libro.toString());
}
if (scelta == 3) {
print(mieiLibri);
}
} // fine do
while (scelta !=4);
}//fine main.
/** (4) Definire i metodi statici qui sotto per inserire e cercare un nuovo Libro
in un generico array di Libri. Si definisca inoltre un metodo print per stampare su schermo
i valori dell'array di Libri. Si richiamino i metodi nel main sullo specifico array mieiLibri.*/
/**Il metodo inserisci inserisce, se c'è ancora posto, un nuovo Libro nell'array.
Si ricordi che la prima posizione vuota dell'array è indicata da numeroLibri.
I nuovi libri devono essere inseriti in modo ordinato rispetto al titolo. Per fare questo si
usi il metodo sposta dichiarato successivamente.*/
public static void inserisci(Libro [] v){
if (numeroLibri < v.length) {
System.out.println("Titolo:");
String t = tastiera.nextLine();
System.out.println("Autore:");
String a = tastiera.nextLine();
System.out.println("Edizioni");
int e = tastiera.nextInt();
numeroLibri++;
}
else
System.out.println("Non c'e` piu' spazio!");
}
/** Il metodo ricerca restituisce il primo libro con il titolo uguale alla stringa passata
come parametro, se c'è; restituisce null altrimenti.*/
public static Libro ricerca(Libro [] v, String titolo){
for (int i = 0; i < numeroLibri; i++) {
if (titolo.equals(v[i].getTitolo()))
return v[i];
}
return null;
}
/** Il metodo print stampa su schermo i libri contenuti nell'array */
public static void print(Libro [] v){
for (int i = 0; i < numeroLibri; i++) {
System.out.println(v[i].toString());
}
}
}
Grazie a tutti ciaoooo![]()
![]()
![]()