Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    53

    creazione array di oggetti

    salve ho creato un array di oggetti

    codice:
    public class prova {
    
    	public void crea(){
    		prova[] pro = new prova[5] ;
    ora vorrei inserirgli 3 variabili
    String nome
    String cognome
    int eta

    come faccio?? sapevo che si faceva una cosa del genere ma non è proprio così

    codice:
    pro = new pro ( String nome, String cognome, int eta);
    di preciso come si fa?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    codice:
    Person[] p= new Person[10];
    p[0] = new Person("Mario", "Rossi");
    p[1] = new Person("Paolo", "Bianchi");
    ...
    p[9] = new Person("Luigi", "Verdi");
    Su che libro stai studiando?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    53
    Originariamente inviato da Alex'87
    codice:
    Person[] p= new Person[10];
    p[0] = new Person("Mario", "Rossi");
    p[1] = new Person("Paolo", "Bianchi");
    ...
    p[9] = new Person("Luigi", "Verdi");
    Su che libro stai studiando?
    concetti di informatica e fondamenti di java ma comunque perchè si mette person[] ?? nn si mette il nome della classe??? e poi non bisogna dichiarare le variabili ?? tipo int età String nome etc...?

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da dik1992
    concetti di informatica e fondamenti di java ma comunque perchè si mette person[] ?? nn si mette il nome della classe??? e poi non bisogna dichiarare le variabili ?? tipo int età String nome etc...?
    Sembra ti manchino un po' di basi...

    Quando istanzi un array segui le stesse regole di quando istanzi una classe:

    TIPO nome = new TIPO

    Il tipo di un array è, ad esempio:

    int[] -> array di int
    String[] -> array di String
    Person[] -> array di Person

    ecc.

    In questo modo istanzi solo l'array, non il suo contenuto (che vale null). Per ciascun elemento devi quindi chiamare il costruttore e passare gli eventuali parametri (o passarli con i setter).

    Ovviamente il tipo Person non esiste in java, te lo devi creare te con gli attributi che ti servono (nel mio esempio avresti una classe Person fatta così:
    codice:
    public class Person 
    {
    	private String firstName;
    	private String lastName;
    	
    	public Person(String firstName, String lastName) 
    	{
    		this.firstName = firstName;
    		this.lastName = lastName;
    	}
    	
    	...
    	
    	getter/setter (non li metto, almeno questi immagino tu sappia cosa siano)
    }
    )
    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
    Registrato dal
    Dec 2012
    Messaggi
    53
    Originariamente inviato da Alex'87
    Sembra ti manchino un po' di basi...

    Quando istanzi un array segui le stesse regole di quando istanzi una classe:

    TIPO nome = new TIPO

    Il tipo di un array è, ad esempio:

    int[] -> array di int
    String[] -> array di String
    Person[] -> array di Person

    ecc.

    In questo modo istanzi solo l'array, non il suo contenuto (che vale null). Per ciascun elemento devi quindi chiamare il costruttore e passare gli eventuali parametri (o passarli con i setter).

    Ovviamente il tipo Person non esiste in java, te lo devi creare te con gli attributi che ti servono (nel mio esempio avresti una classe Person fatta così:
    codice:
    public class Person 
    {
    	private String firstName;
    	private String lastName;
    	
    	public Person(String firstName, String lastName) 
    	{
    		this.firstName = firstName;
    		this.lastName = lastName;
    	}
    	
    	...
    	
    	getter/setter (non li metto, almeno questi immagino tu sappia cosa siano)
    }
    )
    vorrei evitare l'uso di this. etc perchp non c'è nel programma e non vorrei che nel corso dell'esame universitario alla correzione mi facessero problemi.
    vorrei usare il metodo che crei prima l'array e poi dichiari le variabili che dovrebbero stare in esso.... una cosa del genere

    codice:
    ublic class prova {
    
    	public void crea(){
    	    prova[] pro = new prova[3];
    		 pro[] = new prova(String name, String cognome, int eta);
    		
    	}
    }
    però l'ultima riga non è corretta qual'è il modo giusto per scriverla??

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    53
    Originariamente inviato da dik1992
    vorrei evitare l'uso di this. etc perchp non c'è nel programma e non vorrei che nel corso dell'esame universitario alla correzione mi facessero problemi.
    vorrei usare il metodo che crei prima l'array e poi dichiari le variabili che dovrebbero stare in esso.... una cosa del genere

    codice:
    ublic class prova {
    
    	public void crea(){
    	    prova[] pro = new prova[3];
    		 pro[] = new prova(String name, String cognome, int eta);
    		
    	}
    }
    però l'ultima riga non è corretta qual'è il modo giusto per scriverla??
    HO PROVATO A FARE QUESTO

    codice:
    public class prova {
    
    
    	public prova (int[] e, String[] nom, String[] cogn){
    	    prova[] pro = new prova[3];
    	    for (int i = 0 ; i <3; i++){
    		 pro[i] = new prova(e,nom,cogn);
    		
    	}
    	    
    	    
    	}
    }
    main

    codice:
    import javax.swing.JOptionPane;
    public class arrayprovamain {
    
    	public static void main(String[] args) {
    		int [] e = new int[3];
    		String [] nom = new String[3];
    		String[] cogn = new String[3];
    		for (int i = 0; i <3 ; i++){
    		e[i] = Integer.parseInt(JOptionPane.showInputDialog("inserire età"));
    		nom[i] = JOptionPane.showInputDialog("inserire nome");
    		cogn[i] = JOptionPane.showInputDialog("inserire cognome");
    		prova prov = new prova (e,nom,cogn);
    		}
    
    	}
    
    }
    ma non va dove sta l'errore??

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da dik1992
    vorrei evitare l'uso di this. etc perchp non c'è nel programma e non vorrei che nel corso dell'esame universitario alla correzione mi facessero problemi.
    Cambi nome, qual è il problema?

    codice:
    public Person(String aFirstName, String aLastName) 
    	{
    		firstName = aFirstName;
    		lastName = aLastName;
    	}
    Mi par strano che in un esame universitario si salti a piè pari this che è una parola chiave abbastanza importante...


    Originariamente inviato da dik1992
    codice:
    ublic class prova {
    
    	public void crea(){
    	    prova[] pro = new prova[3];
    		 pro[] = new prova(String name, String cognome, int eta);
    		
    	}
    }
    però l'ultima riga non è corretta qual'è il modo giusto per scriverla??
    Rileggi il mio primo messaggio in questa discussione...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    53
    Sono arrivato a questo punto vi posto il programma

    codice:
    public class prova {
    private String cognome;
    private String nome;
    int eta;
    
    	public prova (String cogn,String nom,int et ){
    	   eta=et;
    	   nome = nom;
    	   cognome = cogn;
    		
    	}
    	//public void dichiarazione(){
    	//	prova[] p = new prova[4];
    	//	for (int i = 0; i <4;i++){
    	//	 p[i] = new prova (cognome, nome,eta); 
    		 
    	//}
    	//}
    	
    }
    (la parte dichiarazione penso che non serva per questo ho provato ad eseguire il programma anche senza, e questo è il main

    codice:
    import javax.swing.JOptionPane;
    public class arrayprovamain {
    
    	public static void main(String[] args) {
    		int etaa;
    		String cognomee;
    		String nomee;
    		prova[] p = new prova[4];
    		for(int i =0;i<4;i++){
    		
    		nomee = JOptionPane.showInputDialog("inserire nome");
    		cognomee = JOptionPane.showInputDialog("inserire cognome");
    		etaa = Integer.parseInt(JOptionPane.showInputDialog("inserire età "));
    		prova pro = new prova (nomee,cognomee,etaa);
    		p[i] = pro;
    		//pro.dichiarazione();
    		
    		}
    		for (int k =0; k<4;k++){
    		System.out.println(p[k]);
    	}
    	}
    
    }
    quando provo a stampare p (che a mio avviso dovrebbe contenere tutti i dati) mi stampa solo 5 indirizzi e se provo a stampare ad esempio p.nomee non me lo da proprio come posso fare???

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,325
    Stampare un oggetto in questo modo
    codice:
    System.out.println( p[k] );
    non ha molto senso... più che stamparti un hash Java non saprebbe che fare, poichè tu, nella tua classe, non hai specificato come deve comportarsi nella "trasformazione in stringa" dell'oggetto.

    Come si fa per farglielo fare bene? Si deve fare l'override del metodo toString() ereditato da Object.

    Perchè non ti lascia stampare le singole proprietà dell'oggetto? Semplice: perchè sono private, quindi nessuno dall'esterno ne ha accesso. Come si risolve? Inserendo dei metodi appositi che "ritornano" i valori delle proprietà... questi metodi si chiamano "getter"

    Vediamo in soldoni le due cose.

    Override di toString():
    codice:
    public class prova {
       ...
    
       @Override
       public String toString() {
          // La stampa di un oggetto "prova" mi darà una stringa con cognome, nome ed età
          return cognome + ", " + nome + ", " + eta;
       }
    Metodi getter:
    codice:
    public class prova {
       ...
    
       // Ritorno il cognome
       public String getCognome() { return cognome; }
    
       // Ritorno il nome
       public String getNome() { return nome; }
    
       // Ritorno l'età
       public int getEta() { return eta; }
    }
    Vediamo di usare tutti e due i metodi:
    codice:
    // Uso il primo metodo
    for(int k=0; k<4; k++) {
       System.out.println( p[k] );
    }
    
    // Uso il secondo metodo
    for(int k=0; k<4; k++) {
       System.out.println("Cognome: " + p[k].getCognome() );
       System.out.println("Nome: " + p[k].getNome() );
       System.out.println("Età: " + p[k].getEta() );
    }
    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

  10. #10
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da dik1992
    quando provo a stampare p (che a mio avviso dovrebbe contenere tutti i dati) mi stampa solo 5 indirizzi e se provo a stampare ad esempio p.nomee non me lo da proprio come posso fare???
    Ma lo hai mai aperto un libro di Java?

    Inoltre ti era già stato detto anche nei duplicati di questa discussione di usare length per avere la lunghezza dell'array, pazienza.

    System.out.println(p[k]); ti stampa "un indirizzo" (in realtà è un semplice hash) perché non hai ridefinito il metodo toString(). Quiello usato quindi è quello ereditato da Object (che guarda un po', stampa solo l'hash).

    p.nome non può funzionare perché p (che è una array) non ha la proprietà "nome", al massimo puoi fare p[i].nome SE nome fosse public (DA NON FARE ASSOLUTAMENTE). Ti manca il getter, come ti avevo già detto...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.