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
codice:
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"));
}
}
Anagrafe.java
codice:
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;
}
}
Residente.java
codice:
package anagrafe;
public class Residente {
String nome;
String cognome;
String indirizzo;
}
Sapete dirmi cosa sbaglio? Grazie