Ciao a tutti, sono un principiante di java. Avviando il programma mi da il seguente errore:
Exception in thread "main"
java.lang.NullPointerException
at anagrafe.Anagrafe.primo(Anagrafe.java:42)
at Principale.main(Principale.java:31)
Questo è il codice delle classi.
Principale.java
Anagrafe.javacodice:import anagrafe.Anagrafe; /** * Classe con un main di esempio. */ public class Principale { /** * Esempio di uso della classe Anagrafe * Puo' essere utilizzato come semplice "test" * */ public static void main(String[] args) { // Quando si crea un oggetto Anagrafe si deve fornire il nome del comune Anagrafe a = new Anagrafe("Torino"); //...che e' poi accessibile tramite il metodo getComune(). String nomeComune = a.getComune(); System.out.println("Creata anagrafe per il comune di " + nomeComune); // L'aggiunta di un nuovo residente avviene // tramite il metodo iscrivi() che riceve tre parametri // stringa: nome, cognome, e indirizzo a.iscrivi("Mario","Rossi","Via Roma 84"); a.iscrivi("Giovanni","Verdi","Largo Milano 123"); a.iscrivi("Giuseppe","Bianchi","Piazza Napoli 219"); // Per accedere al primo residente si utilizza // il metodo primo() String primoResidente = a.primo(); System.out.println("primo() --> " + primoResidente); // Per accedere ad un residente qualsiasi dell'anagrafe // si utilizza il metodo residente() che riceve come parametro // il numero d'ordine del residente (a partire da 1, // percio' primo() == residente(1)); primoResidente = a.residente(1); System.out.println("residente(1) --> " + primoResidente); System.out.println("residente(2) --> " + a.residente(2)); System.out.println("residente(3) --> " + a.residente(3)); // Il metodo elenco() restituisce una stringa con // l'elenco dei residenti dell'anagrafe, uno per riga // (ogni riga termina con ';', l'ultima con '.') System.out.println("Elenco: " + a.elenco()); // Il metodo cerca() restituisce la stringa // corrispondente al primo residente che contiene il // parametro nel nome, nel cognome oppure nell'indirizzo System.out.println("Ricerca 'Milano': " + a.cerca("Milano")); } }
Residente.javacodice:package anagrafe; public class Anagrafe { String nomeAnagrafe; private Residente residenti[]; static final int MAX = 20; int i; // Inserire tutti gli attributi necessari // Eventualmente creare altre classi /** * Crea una nuova anagrafe per il comune specificato */ public Anagrafe(String comune) { nomeAnagrafe=comune; residenti = new Residente[MAX]; i=0; } /** * Aggiunge un nuovo residente all'anagrafe */ public void iscrivi(String nome, String cognome, String indirizzo){ Residente r = new Residente(); r.nome=nome; r.cognome=cognome; r.indirizzo=indirizzo; residenti[i]=r; i++; } /** * Restituisce il primo residente */ public String primo() { return residenti[i].nome + " " + residenti[i].cognome + " " + residenti[i].indirizzo; } /** * Restituisce il nome del comune */ public String getComune() { return nomeAnagrafe; } /** * Restituisce il residente i-esimo iscritto all'anagrafe */ public String residente(int i) { return residenti[i-1].nome + " " + residenti[i-1].cognome + " " + residenti[i-1].indirizzo; } /** * Restituisce una stringa con l'elenco dei residenti, * ciascuno su una riga diversa * Ogni riga termina con ';', l'ultima con '.' */ public String elenco() { String result = "("; for(int i=0; i<residenti.length; ++i){ if(residenti[i] == null) break; if(i>0) result+=", "; result += residente(i+1); } result += ")"; return result; } /** * Restituisce la stringa con il primo residente che * contiene il parametro daCercare all'interno del nome, * del cognome o dell'indirizzo */ public String cerca(String daCercare) { return null; } }
Sapete dirmi cosa sbaglio? Graziecodice:package anagrafe; public class Residente { String nome; String cognome; String indirizzo; }

Rispondi quotando