Salve.
Ho iniziato a studiare Java da poco tempo, e oggi ho deciso di creare un programma che gestisca una Biblioteca. Ho creato 4 classi: Libro, Mensola, Scaffale e Biblioteca, più il main.
Però purtroppo quando voglio fare una prova prima di continuare a scrivere il codice, il compilatore (nel mio caso ho provato sia con Eclipse e sia con Bluej) mi segnala un errore strano:
codice:
Exception in thread "main" java.lang.NullPointerException
at Mensola.<init>(Mensola.java:12)
at Scaffale.<init>(Scaffale.java:12)
at Biblioteca.<init>(Biblioteca.java:13)
at Main.main(Main.java:14)
Non riesco a capire il problema, ho provato in tutti i modi... Scusate la mia ignoranza, ma ho appena iniziato 
Qui ho i codici delle classi.
Libro:
codice:
public class Libro {
private String titolo;
private String autore;
private int pagine;
public Libro()
{
titolo = null;
autore = null;
pagine = 0;
}
public void setPagine(int p)
{
pagine = p;
}
public void setTitolo(String t)
{
titolo = t;
}
public void setAutore(String a)
{
autore = a;
}
public int getPagine()
{
return pagine;
}
public String getTitolo()
{
return titolo;
}
public String getAutore()
{
return autore;
}
}
Mensola:
codice:
public class Mensola {
public Libro mensola[];
private static final int MAX_NUM = 5;
public boolean contr;
public int ripiano_ok;
public Mensola()
{
for (int i = 0; i < MAX_NUM; i++)
{
this.mensola[i] = null;
}
contr = false;
ripiano_ok = 0;
}
public int getMAX_NUM()
{
return MAX_NUM;
}
}
Scaffale:
codice:
public class Scaffale {
public Mensola scaffale[];
private static final int MAX_NUM = 3;
public boolean contr;
public int ripiano_ok;
public Scaffale()
{
for (int i = 0; i < MAX_NUM; i++)
{
this.scaffale[i] = new Mensola();
}
contr = false;
ripiano_ok = 0;
}
public void controllo()
{
for (ripiano_ok = 0; ripiano_ok < MAX_NUM; ripiano_ok++)
{
if (scaffale[ripiano_ok].mensola[scaffale[ripiano_ok].ripiano_ok] == null)
{
contr = true;
}
if (contr)
break;
}
}
}
Biblioteca:
codice:
public class Biblioteca {
private Scaffale[] biblioteca;
private static final int MAX_NUM = 4;
public int ripiano;
public boolean ricerca;
public Biblioteca()
{
for (int i = 0; i < MAX_NUM; i++)
{
this.biblioteca[i] = new Scaffale();
}
ripiano = 0;
ricerca = false;
}
public void addLibro()
{
for (int i = MAX_NUM; i < 0; i--)
{
biblioteca[i].controllo();
if (biblioteca[i].contr)
{
biblioteca[i].scaffale[biblioteca[i].ripiano_ok].mensola[biblioteca[i].scaffale[i].ripiano_ok] = new Libro();
biblioteca[i].scaffale[biblioteca[i].ripiano_ok].mensola[biblioteca[i].scaffale[i].ripiano_ok].setPagine(Main.pag);
biblioteca[i].scaffale[biblioteca[i].ripiano_ok].mensola[biblioteca[i].scaffale[i].ripiano_ok].setTitolo(Main.tit);
biblioteca[i].scaffale[biblioteca[i].ripiano_ok].mensola[biblioteca[i].scaffale[i].ripiano_ok].setAutore(Main.aut);
}
}
}
public void visualizzazione()
{
for (ripiano = 0; ripiano < MAX_NUM; ripiano++)
{
System.out.println("Scaffale numero " + ripiano);
for (int i = 0; i < 3; i++)
{
System.out.println("Mensola numero " + i);
for (int j = 0; j < 5; j++)
{
//if (biblioteca[ripiano].scaffale[i].mensola[j].getPagine() != 0)
System.out.print("Vuoto | ");
//else
//System.out.print(this.biblioteca[ripiano].scaffale[i].mensola[i].getTitolo() + " | ");
}
}
}
System.out.println("");
}
public void ricerca_libro(String tit)
{
ricerca = false;
for (int k = 0; k < MAX_NUM; k++)
for (int i = 0; i < 3; i++)
for (int j = 0; j < 5; j++)
{
if (biblioteca[k].scaffale[i].mensola[j].getTitolo() == tit)
{
System.out.println("Libro Trovato! Si trova in: Scaffale " + k + "Mensola " + i + "Posto " + j);
ricerca = true;
}
if (ricerca)
break;
}
}
}
Main (che devo completare):
codice:
import java.util.Scanner;
import javax.swing.JOptionPane;
public class Main {
public static int pag;
public static String tit, aut;
@SuppressWarnings("resource")
public static void main(String args[])
{
int risposta1;
String titolo;
Biblioteca biblioteca = new Biblioteca();
Scanner scan = new Scanner(System.in);
System.out.println("BENVENUTO IN BIBLIOTECA!");
System.out.println("");
System.out.println("Cosa vuoi fare?");
System.out.println("1) ----> Aggiungere un Libro");
System.out.println("2) ----> Controllare lo stato degli Scaffali");
System.out.println("3) ----> Prendere un Libro in prestito");
System.out.println("4) ----> Restituire un Libro");
System.out.println("5) ----> Cercare un Libro");
risposta1 = scan.nextInt();
switch (risposta1)
{
case 1: System.out.print("Inserisci Titolo: ");
tit = scan.next();
System.out.print("Inserisci Autore: ");
aut = scan.next();
System.out.print("Inserisci Pagine: ");
pag = scan.nextInt();
biblioteca.addLibro();
break;
case 2: biblioteca.visualizzazione();
break;
case 3: System.out.print("Digitare il titolo del Libro da prendere in prestito: ");
titolo = scan.next();
biblioteca.ricerca_libro(titolo);
}
}
}
Grazie in anticipo per l'aiuto