Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2013
    Messaggi
    5

    [java] costruttore che istanzia array

    Ciao ragazzi , prima di tutto volevo farvi i complimenti per il forum.

    Mi sono da poco avvicinato alla programmazione in java dopo aver programmato in C , ho un problema con un esercizio, Il testo è il seguente

    Definire una classe che rappresenta un array di interi , definire un costruttore che , dato un parametro n istanzia un array con elementi casuali. so che è banale , ma non riesco a capire l'errore che commetto, vi posto il codice , spero possiate aiutarmi. Grazie anticipatamente

    Questa è la classe con il costruttore


    codice:
     public class array {
        
        array(int n) {
            int[] V = new int[n];
            
            for(int i =0;i<n;i++) {
            
            V[i] = (int)Math.random()*10;
        }
        }  
    }
    e questo è il main dove ho istanziato l'oggetto e ho provato a stamparlo:

    codice:
       public class esegui {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // TODO code application logic here
            
            array vettore = new array(5);
            
            for(int i = 0;i<5;i++) {
                System.out.println("Elemento" , vettore[i]);
            }
            
            
        }
    }
    Utilizzo NetBeans come IDE e mi segnala questo errore: array required , but array found

    Spero grazie al vostro aiuto di riuscire a capire dove sbaglio

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quello che hai scritto non ha alcun senso.

    Intanto l'array v nasce e muore all'interno del costruttore di array (parentesi, pessimo nome per una classe...) pertanto al di fuori di esso non esiste.

    Scrivere vettore[i] (con vettore del tuo tipo array) non significa niente: le [] sono ad esclusivo utilizzo degli array (quelli veri).
    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
    Apr 2013
    Messaggi
    5
    Mi scuso per gli orrori scritti , come ho detto è da poco che mi sono avvicinato a java , mi aiuteresti a capire dove ho sbagliato , ed a correggerlo? grazie.

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da neo47 Visualizza il messaggio
    Mi scuso per gli orrori scritti , come ho detto è da poco che mi sono avvicinato a java , mi aiuteresti a capire dove ho sbagliato , ed a correggerlo? grazie.
    Certo
    Intanto spiega cosa vorresti fare. Riempire un array di valori a caso e stamparlo? Devi per forza scrivere una nuova classe?
    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
    Apr 2013
    Messaggi
    5
    Il testo integrale dell'esercizio sarebbe questo:

    Definire una classe che rappresenta un vettore di interi .Si definisca un costruttore della classe che ha un
    parametro intero n e che istanzia il vettore V con n elementi casuali.
    Definire metodi per:
    . visualizzare il vettore
    - calcolare la somma degli elementi del vettore
    - calcolare la media degli elementi del vettore
    - calcolare il massimo degli elementi del vettore
    - calcolare il minimo degli elementi del vettore
    - calcolare la moda degli elementi del vettore (il valore che è presente più volte; si supponga il vettore non ordinato)
    - calcolare la moda degli elementi del vettore (il valore che è presente più volte; si supponga il vettore ordinato)
    dato un elemento restituire la posizione dell’elemento nel vettore (si supponga il vettore non ordinato)
    dato un elemento restituire la posizione dell’elemento nel vettore (si supponga il vettore ordinato)
    - contare gli elementi pari
    - contare gli elementi maggiori di un valore dato
    . contare gli elementi minori di un valore dato (si supponga il vettore ordinato)
    - ordinare il vettore
    restituire l’unione ordinata di 2 dati vettori ordinati
    restituire l’intersezione ordinata di 2 dati vettori ordinati

    A me interessava capire come istanziare un array mediante costruttore con elementi casuali e poi stamparlo , è questo il passaggio che fatico a capire . il resto dell'esercizio credo di riuscire a svolgerlo tranquillamente.

    Grazie in anticipo

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Ora è più chiaro.

    Per iniziare il tuo array non deve essere dichiarato dentro il costruttore ma a livello di classe.
    Per stamparlo puoi fare in (almeno) due modi:
    1) ridefinisci il metodo toString() in modo da stamparti l'array
    2) ti fai un metodo apposito

    Ma la logica di stampa devi incapsularla nella tua classe. Una cosa del genere:

    codice:
    public class RandomArray {
    
        private int[] array;
    
        public RandomArray(int length) {
            array = new int[length];
            for (int i = 0; i < array.length; i++) {
                array[i] = (int) (Math.random() * 10);
            }
        }
    
        public void print() {
            for (int i = 0; i < array.length; i++) {
                System.out.printf("element at index %d = %d\n", i, array[i]);
            }
        }
        
    }


    edit

    Poi ovviamente nel main ti basta fare

    codice:
    RandomArray randomArray = new RandomArray(10);
    randomArray.print();
    Ultima modifica di Alex'87; 06-02-2014 a 17:03
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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

    (int) Math.random() * 10 non è corretto:

    Math.random() ti da un numero tra 0 e 1 e tu lo casti a int, troncandolo e di fatto avrai sempre zero come risultato.

    Usa le parentesi: (int) (Math.random() * 10)
    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
    Apr 2013
    Messaggi
    5
    Grazie...sei stato molto chiaro...non trovavo un esempio che mi chiarisse le idee... comunque poi posso tranquillamente (in una classe con il main) creare una nuova istanza di Randomarray e agire su di essa con il metodo , giusto? se io provassi a stampare l'array non tramite un metodo ma semplicemente tramite la System.out.println non me lo permetterebbe giusto?

  9. #9
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Se usi System.out.println viene automaticamente richiamato il metodo toString dell'oggetto. Quindi se vuoi utilizzare questo modo non fare un metodo print ma fai l'override del metodo toString.

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2013
    Messaggi
    5
    Ho capito ancora mille grazie

Tag per questa discussione

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.