darkmax
02-10-2008, 12:26
Perchè mi lancia l'eccezione di NullPointerException sulla riga 179? e precisamente sul case 4(in rosso)?
/*
Un volo puµo essere caratterizzato tramite la sigla (Es. AZ124),
l'aereoporto di partenza, l'aereoporto di destinazione,
l'aereomobile (Es. Airbus300) e l'elenco dei passeggeri.
Scrivere una classe Volo, il cui costruttore imposta il numero massimo di
passeggeri.
Oltre ai metodi che restituiscono i valori delle variabili istanza,
deŻnire i seguenti metodi:
- un metodo che aggiunge un passeggero ad un volo;
- un metodo che restituisce una stringa che descrive un volo tramite
sigla del volo, cittµa e nome dell'aereoporto di partenza e cittµa e
nome dell'aereoporto di destinazione,
ad esempio "Volo AZ108 Roma Fiumicino - Londra Heathrow";
- un metodo che restituisce l'elenco dei nomi dei passeggeri di un volo;
- un metodo che restituisce l'elenco dei posti dei passeggeri che hanno
richiesto un pasto vegetariano.
*/
package Aeroporto;
import java.util.Scanner;
public class Terminal
{
private static int numa=0,nump=0,numv=0;
private static Volo[] v=new Volo[numv];
private static Aeroporto[] a=new Aeroporto[numa];
private static Passeggero[] p=new Passeggero[nump];
public static void inserimentoAeroporto()
{
Scanner stra=new Scanner(System.in);
String na,ca,sa=new String();
System.out.println("Inserisci il nome dell'aeroporto: ");
na=stra.nextLine();
System.out.println("Inserisci la città dell'aeroporto: ");
ca=stra.nextLine();
System.out.println("Inserisci la sigla dell'aeroporto: ");
sa=stra.nextLine();
a[numa-1]=new Aeroporto(na,ca,sa);
}
public static void inserimentoVolo()
{
Scanner strv=new Scanner(System.in);
Scanner strn=new Scanner(System.in);
String s,ap,ad,am=new String();
int nmx=0;
System.out.println("Inserisci la sigla del violo: ");
s=strv.nextLine();
System.out.println("Inserisci l'aeroporto di partenza: ");
ap=strv.nextLine();
System.out.println("Inserisci l'aeroporto di destinazione: ");
ad=strv.nextLine();
System.out.println("Inserisci l'aeromobile: ");
am=strv.nextLine();
System.out.println("Inserisci il numero massimo di passeggeri del volo: ");
nmx=strn.nextInt();
v[numv-1]=new Volo(s,ap,ad,am,nmx);
}
public static void main(String[] args)
{
//---------
Scanner strp=new Scanner(System.in);
String np=new String();
String naziop=new String();
String pp=new String();
String pastop=new String();
String sigvol=new String();
//---------
String sig=new String();
String cp=new String();
String ap=new String();
String cd=new String();
String ad=new String();
Scanner in=new Scanner(System.in);
int op=-1,x=0;
do
{
System.out.println("");
System.out.println("1 - Inserisci aeroporto; ");
System.out.println("2 - Inserisci volo; ");
System.out.println("3 - Inserisci passeggero; ");
System.out.println("4 - Descrizione volo; ");
System.out.println("0 - Esci. ");
System.out.println("Scegli l'operazione da fare: ");
op=in.nextInt();
System.out.println("");
switch(op)
{
case 1:
numa+=1;
a=new Aeroporto[numa];
System.out.println("");
System.out.println("Inserimento aeroporto "+numa);
inserimentoAeroporto();
break;
case 2:
if (numa>=2)
{
numv+=1;
v=new Volo[numv];
System.out.println("");
System.out.println("Inserimento volo "+numv);
inserimentoVolo();
}
else
{
System.out.println("");
System.out.println("Non sono presenti almeno due aeroporti per inserire un volo. ");
}
break;
case 3:
if (numv>0)
{
x=0;
System.out.println("");
System.out.println("Inserisci la sigla del volo del passeggero: ");
sigvol=strp.nextLine();
for (int i=0;i<numv;i++)
{
if (sigvol.equals(v[i].getsiglaVolo()))
{
for (int j=0;j<nump;j++)
{
if (v[i].getsiglaVolo().equals(p[j].getsiglaVolo()))
x+=1;
}
if (x<v[i].getnumMaxP())
{
nump+=1;
p=new Passeggero[nump];
System.out.println("");
System.out.println("Inserimento passeggere "+nump);
System.out.println("Inserisci il nome del passeggero: ");
np=strp.nextLine();
System.out.println("Inserisci la nazionalità del passeggero: ");
naziop=strp.nextLine();
System.out.println("Inserisci il posto assegnato al passeggero: ");
pp=strp.nextLine();
System.out.println("Inserisci il tipo di pasto richiesto dal passeggero: ");
pastop=strp.nextLine();
p[nump-1]=new Passeggero(np,naziop,pp,pastop,sigvol);
break;
}
else
{
System.out.println("");
System.out.println("Non c'è più posto su questo volo. ");
}
}
else
{
System.out.println("");
System.out.println("Non esiste questo volo. ");
}
}
}
else
{
System.out.println("");
System.out.println("Non ci sono voli. ");
}
break;
case 4:
System.out.println("");
System.out.println("Inserisci la sigla del volo: ");
sigvol=strp.nextLine();
for (int i=0;i<numv;i++)
{
if (sigvol.equals(v[i].getsiglaVolo()))
{
sig=v[i].getsiglaVolo();
ap=v[i].getaeroportoPartenza();
ad=v[i].getaeroportoDestinazione();
for (int j=0;j<numa;j++)
{
if (ap.equals(a[j].getnomeAeroporto()))
cp=a[j].getcittaAeroporto();
if (ad.equals(a[j].getnomeAeroporto()))
cd=a[j].getcittaAeroporto();
}
}
}
System.out.println("");
System.out.println("Volo "+ sig +" "+cp+" "+ap+" - "+cd+" "+ad);
break;
case 5:
System.out.println("");
System.out.println("Inserisci la sigla del volo: ");
sigvol=strp.nextLine();
for (int i=0;i<nump;i++)
{
if (sigvol.equals(p[i].getsiglaVolo()))
{
System.out.println(p[i].getnomePasseggero());
}
}
break;
case 6:
System.out.println("");
for (int i=0;i<nump;i++)
{
if (p[i].equals("vegetariano"))
{
System.out.println(p[i].getpastoPasseggero());
}
}
break;
}
}while(op!=0);
}
}
/*
Un volo puµo essere caratterizzato tramite la sigla (Es. AZ124),
l'aereoporto di partenza, l'aereoporto di destinazione,
l'aereomobile (Es. Airbus300) e l'elenco dei passeggeri.
Scrivere una classe Volo, il cui costruttore imposta il numero massimo di
passeggeri.
Oltre ai metodi che restituiscono i valori delle variabili istanza,
deŻnire i seguenti metodi:
- un metodo che aggiunge un passeggero ad un volo;
- un metodo che restituisce una stringa che descrive un volo tramite
sigla del volo, cittµa e nome dell'aereoporto di partenza e cittµa e
nome dell'aereoporto di destinazione,
ad esempio "Volo AZ108 Roma Fiumicino - Londra Heathrow";
- un metodo che restituisce l'elenco dei nomi dei passeggeri di un volo;
- un metodo che restituisce l'elenco dei posti dei passeggeri che hanno
richiesto un pasto vegetariano.
*/
package Aeroporto;
import java.util.Scanner;
public class Terminal
{
private static int numa=0,nump=0,numv=0;
private static Volo[] v=new Volo[numv];
private static Aeroporto[] a=new Aeroporto[numa];
private static Passeggero[] p=new Passeggero[nump];
public static void inserimentoAeroporto()
{
Scanner stra=new Scanner(System.in);
String na,ca,sa=new String();
System.out.println("Inserisci il nome dell'aeroporto: ");
na=stra.nextLine();
System.out.println("Inserisci la città dell'aeroporto: ");
ca=stra.nextLine();
System.out.println("Inserisci la sigla dell'aeroporto: ");
sa=stra.nextLine();
a[numa-1]=new Aeroporto(na,ca,sa);
}
public static void inserimentoVolo()
{
Scanner strv=new Scanner(System.in);
Scanner strn=new Scanner(System.in);
String s,ap,ad,am=new String();
int nmx=0;
System.out.println("Inserisci la sigla del violo: ");
s=strv.nextLine();
System.out.println("Inserisci l'aeroporto di partenza: ");
ap=strv.nextLine();
System.out.println("Inserisci l'aeroporto di destinazione: ");
ad=strv.nextLine();
System.out.println("Inserisci l'aeromobile: ");
am=strv.nextLine();
System.out.println("Inserisci il numero massimo di passeggeri del volo: ");
nmx=strn.nextInt();
v[numv-1]=new Volo(s,ap,ad,am,nmx);
}
public static void main(String[] args)
{
//---------
Scanner strp=new Scanner(System.in);
String np=new String();
String naziop=new String();
String pp=new String();
String pastop=new String();
String sigvol=new String();
//---------
String sig=new String();
String cp=new String();
String ap=new String();
String cd=new String();
String ad=new String();
Scanner in=new Scanner(System.in);
int op=-1,x=0;
do
{
System.out.println("");
System.out.println("1 - Inserisci aeroporto; ");
System.out.println("2 - Inserisci volo; ");
System.out.println("3 - Inserisci passeggero; ");
System.out.println("4 - Descrizione volo; ");
System.out.println("0 - Esci. ");
System.out.println("Scegli l'operazione da fare: ");
op=in.nextInt();
System.out.println("");
switch(op)
{
case 1:
numa+=1;
a=new Aeroporto[numa];
System.out.println("");
System.out.println("Inserimento aeroporto "+numa);
inserimentoAeroporto();
break;
case 2:
if (numa>=2)
{
numv+=1;
v=new Volo[numv];
System.out.println("");
System.out.println("Inserimento volo "+numv);
inserimentoVolo();
}
else
{
System.out.println("");
System.out.println("Non sono presenti almeno due aeroporti per inserire un volo. ");
}
break;
case 3:
if (numv>0)
{
x=0;
System.out.println("");
System.out.println("Inserisci la sigla del volo del passeggero: ");
sigvol=strp.nextLine();
for (int i=0;i<numv;i++)
{
if (sigvol.equals(v[i].getsiglaVolo()))
{
for (int j=0;j<nump;j++)
{
if (v[i].getsiglaVolo().equals(p[j].getsiglaVolo()))
x+=1;
}
if (x<v[i].getnumMaxP())
{
nump+=1;
p=new Passeggero[nump];
System.out.println("");
System.out.println("Inserimento passeggere "+nump);
System.out.println("Inserisci il nome del passeggero: ");
np=strp.nextLine();
System.out.println("Inserisci la nazionalità del passeggero: ");
naziop=strp.nextLine();
System.out.println("Inserisci il posto assegnato al passeggero: ");
pp=strp.nextLine();
System.out.println("Inserisci il tipo di pasto richiesto dal passeggero: ");
pastop=strp.nextLine();
p[nump-1]=new Passeggero(np,naziop,pp,pastop,sigvol);
break;
}
else
{
System.out.println("");
System.out.println("Non c'è più posto su questo volo. ");
}
}
else
{
System.out.println("");
System.out.println("Non esiste questo volo. ");
}
}
}
else
{
System.out.println("");
System.out.println("Non ci sono voli. ");
}
break;
case 4:
System.out.println("");
System.out.println("Inserisci la sigla del volo: ");
sigvol=strp.nextLine();
for (int i=0;i<numv;i++)
{
if (sigvol.equals(v[i].getsiglaVolo()))
{
sig=v[i].getsiglaVolo();
ap=v[i].getaeroportoPartenza();
ad=v[i].getaeroportoDestinazione();
for (int j=0;j<numa;j++)
{
if (ap.equals(a[j].getnomeAeroporto()))
cp=a[j].getcittaAeroporto();
if (ad.equals(a[j].getnomeAeroporto()))
cd=a[j].getcittaAeroporto();
}
}
}
System.out.println("");
System.out.println("Volo "+ sig +" "+cp+" "+ap+" - "+cd+" "+ad);
break;
case 5:
System.out.println("");
System.out.println("Inserisci la sigla del volo: ");
sigvol=strp.nextLine();
for (int i=0;i<nump;i++)
{
if (sigvol.equals(p[i].getsiglaVolo()))
{
System.out.println(p[i].getnomePasseggero());
}
}
break;
case 6:
System.out.println("");
for (int i=0;i<nump;i++)
{
if (p[i].equals("vegetariano"))
{
System.out.println(p[i].getpastoPasseggero());
}
}
break;
}
}while(op!=0);
}
}