Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    280

    [java] array di oggetti

    ciao a tutti, volevo sapere come faccio a creare un array di oggetti considerando che per ogni oggetto devo richiamare il costruttore con degli argomenti.. una cosa del genere
    codice:
    public SalaCinema[] ListaSale = new SalaCinema[20];
    però per ogni SalaCinema[x] devo passargli un valore per il costruttore.
    inoltre poi volevo sapere come poter accedere ad ogni oggetto , se si fa semplicemente con SalaCinema[x].nomemetodo();

    spero di esser stato chiaro.. grazie.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,280

    Re: [java] array di oggetti

    Originariamente inviato da magicofred
    ciao a tutti, volevo sapere come faccio a creare un array di oggetti considerando che per ogni oggetto devo richiamare il costruttore con degli argomenti.. una cosa del genere
    codice:
    public SalaCinema[] ListaSale = new SalaCinema[20];
    però per ogni SalaCinema[x] devo passargli un valore per il costruttore.
    Nella riga sopra hai solo istanziato l'array, che contiene inizialmente 20 reference con valore null.
    È chiaro che devi poi istanziare gli oggetti SalaCinema veri e propri ed assegnarli ai reference nell'array!
    Come costruire gli oggetti, dipende da cosa devi passare nel costruttore. Facciamo l'esempio che SalaCinema abbia un costruttore che riceve un int che indica il numero della sala (non posso ovviamente sapere cosa hai messo come costruttori). Comunque se devi creare le sale da 1 a 20, ti basterebbe un ciclo for.

    Originariamente inviato da magicofred
    inoltre poi volevo sapere come poter accedere ad ogni oggetto , se si fa semplicemente con SalaCinema[x].nomemetodo();
    Sì, così ... beh, non con il nome della classe ma con la variabile ListaSale[x].blabla.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    2

    Re: [java] array di oggetti

    Ciao a tutti,
    mi aggrego a questa vecchia discussione perché mi trovo alle prese con un problema simile.
    Sto da poco tempo cercando di imparare la programmazione java come autodidatta e per farlo seguo le dispense di un corso universitario di fondamenti di informatica.
    L'esercizio che mi crea problemi richiede proprio la creazione di un vettore di oggetti che vada a rappresentare dei punti sul piano cartesiano.

    In particolare l'esercizio chiede:
    data la classe

    public class Esercizio04_Punto
    {
    public double x, y;
    }

    Si aggiunga alla classe Puntoun metodo "public static Punto piuVicinoOrigine(Punto[] v)" che, dato un array v di riferimenti a oggetti Punto, restituisce il punto nell'array avente la distanza minima dall'origine degli assi, oppure null se l'array v non contiene alcun punto.

    Io ho sviluppato il metodo come segue:

    public static Esercizio04_Punto piuVicinoOrigine(Esercizio04_Punto[] v)
    {
    Esercizio04_Punto pnt = new Esercizio04_Punto();
    pnt.x = v[0].x;
    pnt.y = v[0].y;
    for(int i=1; i<v.length; ++i)
    {
    if(Math.sqrt((pnt.x*pnt.x)+(pnt.y*pnt.y)) > Math.sqrt((v[i].x*v[i].x)+(v[i].y*v[i].y)));
    {
    pnt.x = v[i].x;
    pnt.y = v[i].y;
    }
    }
    return pnt;
    }

    e fin qui credo di non aver fatto niente di sbagliato.

    L'esercizio inoltre chiede:
    Scrivere una classe ProvaPunto contenente un metodo main di prova per verificare
    il funzionamento dei metodi scritti. E qui cominciano i dolori

    Io ho fatto nel seguente modo:
    public class Esercizio04
    {
    public static void main(String[] args)
    {
    Punto[] p = new Punto[4];

    p[0].x = 3.0; Mi da errore a questa riga
    p[0].y = 2.0;
    p[1].x = 7.2;
    p[1].y = 4.8;
    p[2].x = 2.7;
    p[2].y = 5.4;
    p[3].x = 9.0;
    p[3].y = 4.2;

    Punto test = Punto.piuVicinoOrigine(p);

    System.out.println("Il punto più vicino all'origine è: " + "(" + test.x + ", " + test.y + ")");
    }
    }

    Apparentemente non ho nessun errore ma quando vado ad eseguire mi solleva un eccezione del tipo java.lang.NullPointerException dove riportato e probabilmente anche alle righe successive.
    Dove sbaglio?
    Aiutatemi se potete.
    Ps: nel programma non ho ancora sviluppato la parte dove viene richiesto di far ritornare null al metodo se il vettore non contiene alcun punto.

    Grazie a tutti in anticipo.


  4. #4
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    D'ora in avanti, per postare il codice, utilizza gli appositi tag CODE presenti nella barra degli strumenti che trovi nell'editor dei post: rende il codice più leggibile e facile da comprendere per chi cerca di supportarti (oltre ad essere previsto dal regolamento).

    Ti segnalo un errore sul metodo che hai postato. Subito dopo la condizione dell'if c'è un punto e virgola che non ci deve essere: se lo lasci è come se il codice successivo non venisse condizionato, cosa che è evidentemente sbagliata.
    Per il resto, mi pare che sia corretto (salvo capire se il problema ti richiede di ritornare l'istanza del punto più vicino presente nell'array "v", oppure, come hai fatto tu, una nuova istanza del punto in cui setti le stesse coordinate).

    In merito alla questione principale, l'errore è esattamente lo stesso evidenziato nella discussione a cui ti sei accodato.
    L'istruzione:

    codice:
    Punto[] p = new Punto[4];
    istanzia un nuovo array di lunghezza 4, che Java inizializza per default con 4 elementi "null". Quindi, eseguire subito dopo:

    codice:
    p[0].x = 3.0;
    è esattamente come dire:

    codice:
    null.x = 3.0;
    che evidentemente ti provoca una NullPointerException.

    Per risolvere: per ogni elemento dell'array devi istanziare un nuovo oggetto e poi puoi inizializzare le sue coordinate (di seguito lo scrivo solo per il primo):

    codice:
    p[0] = new Punto();
    p[0].x = 3.0;
    p[0].y = 2.0;
    . . .
    Occhio, inoltre, che la tua classe si chiama "Esercizio04_Punto", non solo "Punto".

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    2
    Grazie desa!! Ora funziona tutto
    Scusa per il codice postato male la prossima volta sarò più attento
    Il nome della classe lo avevo modificato io per rendere il codice più chiaro possibile ma evidentemente mi sono dimenticato di cancellare proprio il primo "Esercizio04_"
    Avevo notato che il problema era lo stesso soltanto che nel primo post si fa già riferimento ai costruttori che il corso che sto seguendo ancora non ha trattato quindi non sapevo come fare.

    Grazie ancora

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.