|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2008
Città: Milano
Messaggi: 91
|
Problema NullPointerException
Ciao a tutti, sto sviluppando un programma in Java, la compilazione va bene ma al momento dell'esecuzione mi segnala un errore NullPointerException.
Il programma è formato da 3 classi : Codice:
public abstract class Persona{
String nome,cognome;
int matricola;
//costruttore
public Persona(){
nome="";
cognome="";
matricola=0;
}
//metodi
public void ordina(Persona[] p){
int i;
for(i=0;i<p.length;i++){
if(p[i].matricola<p[i+1].matricola){
Persona d=p[i];
p[i]=p[i+1];
p[i+1]=d;
}
}
}
public String toString(){
return nome + " " + cognome + " " + matricola;
}
}
Codice:
public class Dirigente extends Persona{
double perc;
public Dirigente(){
super();
perc=0.0;
}
}
Codice:
public class Impiegato extends Persona{
double tasso;
public Impiegato(){
super();
tasso=0.0;
}
}
Codice:
import java.lang.*;
import java.io.*;
import java.util.*;
public class Soluzione4{
public static void main(String[] args) throws IOException{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
Persona[] p = new Persona[10];
String input;
String d = "D";
String c = "I";
int i=0;
while((input=in.readLine()) != null){
StringTokenizer str = new StringTokenizer(input,",");
String token = str.nextToken();
i+=1;
if(token.equals(d)){
Dirigente dir = new Dirigente();
dir.nome = str.nextToken();
dir.cognome = str.nextToken();
dir.matricola = Integer.parseInt(str.nextToken());
dir.perc= Double.parseDouble(str.nextToken());
p[i]=dir;
}
if(token.equals(c)){
Impiegato imp = new Impiegato();
imp.nome = str.nextToken();
imp.cognome = str.nextToken();
imp.matricola = Integer.parseInt(str.nextToken());
imp.tasso= Double.parseDouble(str.nextToken());
p[i]=imp;
}
}
for(Persona per : p){
System.out.println(per.toString());
}
}
}
Codice:
System.out.println(per.toString()); |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
|
Quote:
Per ovviare a questo, potresti utilizzare una lista dinamica al posto dell'array statico, per esempio ArrayList, che cresce a seconda delle necessità. Inoltre, ti consiglierei di usare la classe Scanner al posto di BufferedReader per leggere dallo standard input.
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN |
|
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Jun 2008
Città: Milano
Messaggi: 91
|
Quote:
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quando capita un'eccezione la JVM sputa classi, metodi e righe per aiutarti ad individuare il punto nel codice in cui si è verificato il problema. E' un grosso aiuto.
Comunque a me pare che p[0] sia sempre null e quindi l'eccezione dovrebbe capitarti nel System.out.println(per.toString()).
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
incapsulamento....spero che tu non sia ancora arivato a studiarlo!!!
__________________
Khelidan |
|
|
|
|
|
#6 | |
|
Member
Iscritto dal: Jun 2008
Città: Milano
Messaggi: 91
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:47.




















