Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente bannato
    Registrato dal
    Dec 2000
    Messaggi
    147

    [JAVA]stampare da array

    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??

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    per esempio, cominciando a postare un po' di codice.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente bannato
    Registrato dal
    Dec 2000
    Messaggi
    147
    codice:
    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());
         }
      }
    }

  4. #4
    Utente bannato
    Registrato dal
    Dec 2000
    Messaggi
    147
    LeleFT invoco come sempre il tuo aiuto!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    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
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da cielo81
    LeleFT invoco come sempre il tuo aiuto!!
    Ti ha già risposto Andrea.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente bannato
    Registrato dal
    Dec 2000
    Messaggi
    147
    Originariamente inviato da LeleFT
    Ti ha già risposto Andrea.


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

    GRAZIE :maLOL:

  8. #8
    Utente bannato
    Registrato dal
    Dec 2000
    Messaggi
    147
    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!!

  9. #9
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    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());
    }
    }

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    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);
        }
      }
    }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.