PDA

Visualizza la versione completa : [Java] Stampare da array


cielo81
04-07-2005, 19:26
salve raga questo il quesito....
ho una semplicissima classe Nome che mi crea oggetti Nome composti da 3 stringhe Nome(nome, cognome, luogodiNascita)
e i tre metodi che mi ritornano gli eventuali contenuti...
poi vado a creare un main dove carico un array di Nome, a questo punto voglio stampare tutti i dati relativi a coloro che hanno il campo luogodiNascita settato a roma!!! il problema che se tutti gli oggetti Nome che inserisco hanno il campo luogodi nascita settato a Roma lui li stampa altrimenti stampa dice:

java.lang.NullPointerException
at provapr.Nome.main(Nome.java:41)
Exception in thread "main"

come lo risolvo??

Andrea1979
04-07-2005, 19:35
per esempio, cominciando a postare un po' di codice. :incupito: :sonno:

cielo81
04-07-2005, 19:43
public class Nome {
private String nome;
private String cognome;
private String luogodiNascita;
public Nome(String n, String c, String l) {
nome = n;
cognome = c;
luogodiNascita = l;
}
public String getNome() {
return nome;
}
public String getCognome() {
return cognome;
}
public String getLuogodiNascita() {
return luogodiNascita;
}
public static void main(String arg[])throws Exception{
Nome lista[] = new Nome[3];
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for(int i=0; i<3; i++){
System.out.println("Dammi il nome");
String nome = br.readLine();
System.out.println("Dammi il cognome");
String cognome = br.readLine();
System.out.println("Dammi il luogo di nascita");
String luogo = br.readLine();
lista[i] = new Nome(nome,cognome,luogo);
}
Nome lista2[] = new Nome[lista.length];
String temp = "napoli";
for(int j=0; j<lista.length; j++){
if(temp.equals(lista[j].getLuogodiNascita()))
lista2[j] = lista[j];
}
for(int k=0; k<lista2.length; k++){
System.out.println(lista2[k].getCognome());
System.out.println(lista2[k].getNome());
System.out.println(lista2[k].getLuogodiNascita());
}
}
}

cielo81
04-07-2005, 19:50
LeleFT invoco come sempre il tuo aiuto!! :dh:
:ciauz:

Andrea1979
04-07-2005, 19:57
C' che tu comunque crei una seconda lista lunga tanto quanto la prima... con l'unica differenza che poi iniziliazzi a qualcosa diverso da null solo gli elementi il cui getLuogoDiNascita sia "napoli".

Se vuoi continuare con gli array dovresti prima scoprire quanti sono gli elementi di lista in cui luogodinascita sia "napoli", quindi inizializzare un array lista2 lungo tanto quanto e ricopiarci dentro solo gli elementi di lista che hai trovato prima.
Ciao

LeleFT
05-07-2005, 09:19
Originariamente inviato da cielo81
LeleFT invoco come sempre il tuo aiuto!! :dh:
:ciauz:
Ti ha gi risposto Andrea. :)


Ciao. :ciauz:

cielo81
05-07-2005, 09:57
Originariamente inviato da LeleFT
Ti ha gi risposto Andrea. :)


Ciao. :ciauz:
come sempre ti ringrazio per avermi risposto ma se non ti d noia potresti farmi un esempio con codice??

GRAZIE :maLOL:

cielo81
05-07-2005, 10:28
Originariamente inviato da Andrea1979
C' che tu comunque crei una seconda lista lunga tanto quanto la prima... con l'unica differenza che poi iniziliazzi a qualcosa diverso da null solo gli elementi il cui getLuogoDiNascita sia "napoli".

Se vuoi continuare con gli array dovresti prima scoprire quanti sono gli elementi di lista in cui luogodinascita sia "napoli", quindi inizializzare un array lista2 lungo tanto quanto e ricopiarci dentro solo gli elementi di lista che hai trovato prima.
Ciao

mi potresti fare un esempio con codice!!

floyd
05-07-2005, 10:45
for(int k=0; k<lista2.length; k++){
if (lista2[k] != null) {
System.out.println(lista2[k].getCognome());
System.out.println(lista2[k].getNome());
System.out.println(lista2[k].getLuogodiNascita());
}
}

Andrea1979
05-07-2005, 10:47
O fai come suggerisce floyd, oppure qualcosa del genere (ma mi piaceva giocare un po' con String split... :D )



import java.io.*;

public class Nome {
private String nome;
private String cognome;
private String luogodiNascita;

public Nome(String n, String c, String l) {
nome = n;
cognome = c;
luogodiNascita = l;
}

public String getNome() {
return nome;
}

public String getCognome() {
return cognome;
}

public String getLuogodiNascita() {
return luogodiNascita;
}


public static void main(String arg[])throws Exception {
Nome lista[] = new Nome[3];
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

for(int i=0; i<3; i++){
System.out.println("Dammi il nome");
String nome = br.readLine();
System.out.println("Dammi il cognome");
String cognome = br.readLine();
System.out.println("Dammi il luogo di nascita");
String luogo = br.readLine();
lista[i] = new Nome(nome,cognome,luogo);
}

String temp = "napoli";
String who = ""; //puro comodo per estrarre gli indici del vettore in cui luogoDiNascita() temp

for(int j=0; j<lista.length; j++){
if(temp.equals(lista[j].getLuogodiNascita())) {
who +=j+",";
}
}

if (who.length() > 1) { //se ne trova almeno uno nato a temp allora prosegue con la creazione della nuova lista
String[] indici = who.split(",");
Nome lista2[] = new Nome[indici.length];
for(int k=0; (k<indici.length) && (!indici[k].equals("")); k++){
lista2[k]=lista[Integer.parseInt(indici[k])];
}

for (int k=0; k < lista2.length; k++) {
System.out.println(lista2[k].getNome()+" "+lista2[k].getCognome());
}
}
else {
System.out.println("nessuno presente con luogo di nascita = "+temp);
}
}
}

Loading