Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Array di oggetti

  1. #1

    Array di oggetti

    codice:
    public class Cliente{
    	String Nominativo = new String();
    	String Telefono = new String();	
    }
    
    public class Spettacolo{
    	int NroPosti = 25;
    	int NroMaxAttesa;
    	int NroPrenotazioni = 0;
    	Cliente[] ArrayPrenotazioni = new Cliente[NroPosti];
    	Cliente[] ArrayAttesa = new Cliente[0];
    	
    	public Spettacolo(){
    		for(int i=0; i<NroPosti; i++){
    			ArrayPrenotazioni[i].Nominativo = "NOME COGNOME";
    			ArrayPrenotazioni[i].Telefono = "000";
    		}
    	}
    		
    	public void StampaDati(){
    		for(int j=0; j<NroPosti; j++){
    			System.out.print(ArrayPrenotazioni[j].Nominativo);
    			System.out.print(" ");
    			System.out.println(ArrayPrenotazioni[j].Telefono);
    		}		
    	}		
    }
    
    public class index {
    	public static void main(String[] args) {
    		Spettacolo S = new Spettacolo();
    		S.StampaDati();
    	}
    }
    L'errore restituito è:

    Exception in thread "main" java.lang.NullPointerException
    at Spettacolo.<init>(Spettacolo.java:10)
    at index.main(index.java:3)

    Non riesco proprio a capire... HELP ME!!!

  2. #2
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Scusa ma è ft prp male qst programma!:O
    Xke nn inizi cn lo scrivere dei costruttori fatti x bn?

  3. #3
    Sì Dark867...me ne rendo conto!! ma sono rimasto bloccato su questo problema e ho abbandonato tutto il resto!! Non hai qualche idea al riguardo?

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Array di oggetti

    Originariamente inviato da 19pino87
    L'errore restituito è:

    Exception in thread "main" java.lang.NullPointerException
    at Spettacolo.<init>(Spettacolo.java:10)
    at index.main(index.java:3)

    Non riesco proprio a capire... HELP ME!!!
    Non hai istanziato i singoli elementi del vettore:
    codice:
    for(int i=0; i<NroPosti; i++){
      ArrayPrenotazioni[i] = new Cliente();
      ArrayPrenotazioni[i].Nominativo = "NOME COGNOME";
      ArrayPrenotazioni[i].Telefono = "000";
    }
    Originariamente inviato da Dark867
    Scusa ma è ft prp male qst programma!:O
    Xke nn inizi cn lo scrivere dei costruttori fatti x bn?
    Tradotto in italiano significa...?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Guarda io t direi di rifarlo adottando l'approccio corretto: è inutile mettersi a cercare l'errore in un prog fatto così male!

    1)Adotta i costruttori e popola gli attributi adeguatamente.
    2)Renditi conto ke una cosa tipo new array[0] non ha alcun senso xke una volta ke alloki un array la sua dimensione nn può essere cambiata a run time, quindi..studia gli array in java.
    3)Giusto x abituarti: il nome dei metodi e degli attributi in java sarebbe bene farli iniziare x lettera minuscola.

    Originariamente inviato da Alex'87
    Tradotto in italiano significa...?
    This program is totally wrong! Work more on constructors, to begin with:P

  6. #6
    Grazie mille ad entrambi, per l'individuazione dell'errore e per i suggerimenti!!!

  7. #7
    Vorrei proporre un'ulteriore domada, riguardo proprio l'array di cui non conosco inizialmente la dimensione. Qual'è la migliore soluzione da adottare? Conosco la funzione malloc di C, esiste qualcosa di simile in Java?

  8. #8
    Originariamente inviato da 19pino87
    Vorrei proporre un'ulteriore domada, riguardo proprio l'array di cui non conosco inizialmente la dimensione. Qual'è la migliore soluzione da adottare?
    Se non sei vincolato all'uso dell'array, allora puoi utilizzare una struttura dinamica (ad esempio una Lista).
    Altrimenti, ogni volta che devi aggiungere elementi, riallochi il tuo array con uno di dimensione più grande.

  9. #9
    Scusami Vincenzo...potresti essere un pò più chiaro? Io devo necessariamente utilizzare un array.

  10. #10
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Allora..java pur condividendo costrutti e caratteristiche comuni è molto, ma molto diverso dal c!Se hai appena iniziato a programmare ti consiglierei di leggerti prima qualche tutorial ke ti spieghi le differenze (tipo qua http://telemat.die.unifi.it/book/Int...va/java-15.htm) e l'approccio giusto, sennò continuerai a sbagliare.

    In java, a differenza del c, la maggiorparte dei dati è allocata DINAMICAMENTE, quindi non ha senso cercare un costrutto malloc: quando tu fai
    codice:
     int a[] = new int[5];
    stai già allocando quell'array sull'heap!
    La soluzione di vincenzo è questa:
    -salvi temporaneamente l'array puntato da a in un riferimento temporaneo b:
    -assegni a ad un nuovo array della nuova dimensione (a=new int[10], ke so), quindi in pratica allocando un qualcosa di completamente nuovo.
    -copi, tramite ad esempio un for, b in a.
    -aggiungi in coda ad a i nuovi elementi.

    A differenza del c non devi preoccuparti della memoria persa xke java la pulirà autonomamente una volta accortasi ke non c'è più niente ke punta a quella zona.

    Concludo dicendo ke, ovviamente, c sn classi + raffinate x fare questo, come ad esempio Vector o List ma se stai iniziando adesso è bene abituarti agli array.

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.