O fai come suggerisce floyd, oppure qualcosa del genere (ma mi piaceva giocare un po' con String split...
)
codice:
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);
}
}
}