Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    131

    caricamento un vettore

    ciao,
    muovendo i primi passi in java mi sono scontrato in un errore di caricamento di un vettore, ho la mia classe vettore

    codice:
    package elementiBase ;
    
    
    public class Vettore {
    	
    	private String [] v_nomi;
    
    	public String [] getV_nomi() {
    		return v_nomi;
    	}
    
    	public void setV_nomi(String [] v_nomi) {
    		this.v_nomi = v_nomi;
    	
    	}
    
    	public void stampa(){
    	int i = 0;
    	
    	for (i=0;i<=3;i++){
    		System.out.println(v_nomi[i]);
    	}
    	}
    
    }

    e ora voglio istanziare questa classe

    codice:
    package Test;
    
    import elementiBase.Vettore;
    
    public class StampaVettore {
    
    
    	public static void main(String[] args) {
    			
    			Vettore n = new Vettore();
    			n.setV_nomi[]={"anna","luca","corrado"};
    			n.stampa();
    	}
    }
    cosa c'è che non va alla riga n.setV_nomi[]...... ? grazie

  2. #2
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    E' un metodo. Quindi

    codice:
    n.setV_nomi(new String[]{"anna","luca","corrado"});

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    131
    il risultato ci sta GRAZIE ma continua a darmi un errore alla riga 12 della classe vettore

    codice:
    ....
    System.out.println(v_nomi[i]);
    ....
    questo è l'errore

    codice:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    	at elementiBase.Vettore.stampa(Vettore.java:21)
    	at Test.StampaVettore.main(StampaVettore.java:12)

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    codice:
    for (i=0;i<=3;i++){
    		System.out.println(v_nomi[i]);
    	}
    Questo ciclo tenta di stampare 4 elementi: 0, 1, 2, 3; ma il tuo array ne contiene solo 3 (anna, luca e corrado).

    La sintassi corretta è la seguente:

    codice:
    for (i=0;i<3;i++){
    		System.out.println(v_nomi[i]);
    	}
    E, se leggi bene l'eccezione che ti viene sollevata, ti accorgerai che te lo dice chiaramente.


    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    131
    Giusto grazie mille

  6. #6
    Ancora meglio sarebbe
    codice:
    for (i=0; i<=v_nomi.lenght; i++){
    		System.out.println(v_nomi[i]);
    	}
    in questo caso è il vettore stesso che sapendo da quante "celle" di string è composto ne determina la lunghezza.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    131
    si grazie il comando "lenght" è molto più comodo e utile

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    A quello che hanno detto gli altri (length ha però la h finale), mi permetto di riscriverti la classe con qualche correzione:
    - l'indentazione
    - per convenzione i metodi getter e setter hanno la prima lettera dopo get e set maiuscole senza "_"
    - a un array non c'è bisogno che lo chiami v_nomi, basta che lo chiami "nomi"

    codice:
    public class Vettore {
        private String[] nomi;
    
        public String[] getNomi() {
            return nomi;
        }
    
        public void setNomi(String[] nomi) {
            this.nomi = nomi;
        }
    
        public void stampa() {
            for (int i = 0; i < nomi.length; i++)
                System.out.println(nomi[i]);
        }
    }

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    131
    grazie anche a te

  10. #10
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Quello che c0der ha consigliato è giusto. Da 1.5 un'alternativa per il for sarebbe il for-each

    codice:
    for (String nome : nomi)
    {
        System.out.println(nome);
    }

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

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.