Arrays

di il
15 risposte

Arrays

Una domanda, devo riuscire a stampare il contenuto di un array, ma non riesco ad andare oltre.
Potete aiutarmi?
import java.util.Random;

public class vettore {
Random rnd = new Random();
        int n = rnd.nextInt(11);
           String[] v = new String[n];  
}


import java.util.Arrays;

public class NewMain {

    public static void main(String[] args) {
   vettore ciao = new vettore();
   
   System.out.println(Arrays.toString(ciao.String));
    
    }
    
}

15 Risposte

  • Re: Arrays

    salvador ha scritto:


    Una domanda, devo riuscire a stampare il contenuto di un array, ma non riesco ad andare oltre.
    La prima questione è che hai scritto ciao.String mentre invece devi referenziare il campo, ovvero ciao.v
    La seconda questione è che comunque l'array non l'hai inizializzato con qualche stringa, quindi restano tutti null ed otterresti in stampa es. [null, null, null]
  • Re: Arrays

    Ho utilizzato questo ciclo for per stampare il valore minimo del mio array ma non capisco perché mi stampa sempre 0, potete aiutarmi?
             for(int i=1; i<lunghezza; i++){ 
             int minimo = v[0];
               if(v[i] < minimo ){
                   minimo =v[i];
               }
        }
        System.out.println("il valore minimo è " +minimo);
  • Re: Arrays

    Beh... l'istruzione

    int minimo = v[0];

    viene ripetuta per ogni ciclo del for (l'hai messa dentro al ciclo, dovrebbe stare fuori).

    Questa istruzione crea una nuova variabile (che va a nascondere quella evidentemente dichiarata fuori dal metodo, a livello di classe). La variabile fuori dal metodo, pertanto, non viene assolutamente toccata.

    Quello che volevi fare tu, probabilmente, era inizializzare minimo fuori dal ciclo for:
    
    minimo = v[0];
    for( ... ) {
        ...
    }
    
    Se non esistesse una variabile "minimo" dichiarata fuori dal metodo a livello di classe, quel codice non compilerebbe proprio.
  • Re: Arrays

    Si scusa ho sbagliato io nel copiare, l'avevo messa fuori già da prima, ma continua a stampare comunque 0, anche se non è presente in nessun elemento dell'array
  • Re: Arrays

    Posta per bene tutto il codice.
  • Re: Arrays

    Sono in due file separati
    import java.util.Random;
    
    
    public class vettore {
    Random rnd = new Random();
            int n = rnd.nextInt(11);
               int[] v = new int[n];
    }
    
    public class NewMain {
    
        public static void main(String[] args) {
       vettore ciao = new vettore();
      
       for(int i=0; i<ciao.n; i++){
           Random rnd = new Random();
             int a = rnd.nextInt(101);
            ciao.v[i]= a;
       }
                int minimo=ciao.v[0];
                
           for(int i=1; i<ciao.n; i++){ 
               if(ciao.v[i] < minimo ){
                   minimo =ciao.v[i];
               }
        }
             System.out.println("l'elemento più piccolo è " +minimo);
             }
             }
  • Re: Arrays

    salvador ha scritto:


       for(int i=0; i<ciao.n; i++){
           Random rnd = new Random();
             int a = rnd.nextInt(101);
            ciao.v[i]= a;
       }
    1) il Random va dichiarato/inizializzato prima del ciclo, non dentro il ciclo (altrimenti ad ogni ciclo hai un nuovo Random ... non ha senso ed è controproducente).

    salvador ha scritto:


                int minimo=ciao.v[0];
                
           for(int i=1; i<ciao.n; i++){ 
               if(ciao.v[i] < minimo ){
                   minimo =ciao.v[i];
               }
        }
    2) Problema "subdolo". In vettore l'array può essere creato di dimensione 0. In tal caso questa parte NON funziona (già ciao.v[0] lancia eccezione).


    Salvo queste questioni, il risultato finale è corretto (ovvero, determina il minimo).
  • Re: Arrays

    Questo è il main di un progetto; nel file portiere e attaccante ho creato una classe costruttore con il nome, l'età e rispettivamente i rigori parati e i gol segnati. Il vettore v si trova nella classe squadra e deve contenere portieri e attaccanti, il mio problema è che non riesco a stampare correttamente l'array v, dove sbaglio?
    import java.util.Arrays;
    
    
    public class NewMain {
    
    
        public static void main(String[] args) {
              for(int i=0; i<5; i++){
              
                    squadra.v[i]=new portiere("Jack", 28, 50);
              
                   for(int a=5; a<11; a++){
                    squadra.v[a]=new attaccante("Frank", 30, 40);
                }
              }
            
          //  System.out.println(Arrays.toObject(squadra.v));
        
        for(int i=0; i<11; i++){
         System.out.println(squadra.v[i]);
    } 
    }
    }
  • Re: Arrays

    salvador ha scritto:


              for(int i=0; i<5; i++){
              
                    squadra.v[i]=new portiere("Jack", 28, 50);
              
                   for(int a=5; a<11; a++){
                    squadra.v[a]=new attaccante("Frank", 30, 40);
                }
              }
            
          //  System.out.println(Arrays.toObject(squadra.v));         // <--- Non ha senso, non esiste toObject in java.util.Arrays !
        
        for(int i=0; i<11; i++){
         System.out.println(squadra.v[i]);
    }
    Da questo codice non è che si possa dedurre granché ..... ed è comunque "dubbio". Il secondo for è "annidato" dentro il primo for (perché???).

    E in quei squadra.v, "squadra" che cosa è?
    a) il nome della classe? (quindi v è uno static field)
    b) il nome di un reference? (e dove sarebbe la definizione?)

    Mostra quella classe della squadra ...
  • Re: Arrays

    Questa è la classe squadra
    public class squadra{
    
       static Object v[] = new Object [11];
       static Object m,n;
        
       
        public squadra(Object m, Object n){
            squadra.m=m;
            squadra.n=n;
            
            for(int i=0; i<5; i++){
                v[i]=m;
            
            for(int l=0; l>6 && l<11; l++){
                v[l]=n;
            }
            }
            
        }
        
    }
  • Re: Arrays

    Scusa, ma dove stai studiando Java? Devi farti la classe "Giocatore" con attributi "nome", "ruolo", "età" eccetera, e poi ti fai un array di 11 giocatori.

    Non usare Object
  • Re: Arrays

    Ecco tutte le classi complete, l'array poi lo devo inizializzare in modo casuale
    public class giocatori {
        String nome;
        int età;
    
    
    public giocatori(String nome, int età){
    this.nome= nome;
    this.età= età;
    }
    }
    public class portiere extends giocatori{
           int rigori_parati;
        
    
    public portiere(String nome, int età, int rigori_parati){
     super(nome, età);
        this.rigori_parati = rigori_parati;
    }
    }
    public class attaccante extends giocatori{
        int gol_segnati;
        
        public attaccante(String nome, int età, int gol_segnati){
            super(nome, età);
        this.gol_segnati = gol_segnati;   
        }
    }
  • Re: Arrays

    salvador ha scritto:


    Questa è la classe squadra
    public class squadra{
    
       static Object v[] = new Object [11];
       static Object m,n;
    
           ........    
    
    No, così proprio non va. Oltre ad essere un design per niente buono (campi static accessibili all'esterno), è pure scomodo/inefficace per via di tutti quei Object.
  • Re: Arrays

    String non posso utilizzarlo perché poi quando vado ad inizializzare con un giocatore mi dà errore, cosa posso mettere al posto di Object?
Devi accedere o registrarti per scrivere nel forum
15 risposte