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![]()


Rispondi quotando

