Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di filips
    Registrato dal
    Sep 2011
    residenza
    Seconda stella a destra (questo e' il cammino)
    Messaggi
    155

    Dubbio inizializzazione array

    Scusate, secondo voi è corretta questa sintassi?
    codice:
    float[][] mat = new int[][] = { 
                { 1, 2, 3 }, 
                { 4, 5, 6 },
                { 7, 8, 9, 10, 11 }
              };
    A parte la doppia assegnazione, che credo sia solo a titolo esemplificativo-chiarificatorio, mi sembra che il secondo membro del costruttore sia errato perché almeno la prima dimensione (3) dovrebbe essere presente. Confermate?
    Ultima modifica di filips; 11-08-2018 a 09:39
    Per fare un tavolo ci vuole un fiore.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da filips Visualizza il messaggio
    Scusate, secondo voi è corretta questa sintassi?
    codice:
    float[][] mat = new int[][] = { 
                { 1, 2, 3 }, 
                { 4, 5, 6 },
                { 7, 8, 9, 10, 11 }
              };
    No, non è affatto corretta. Innanzitutto quel "=" dopo int[][] è proprio sbagliato. Seconda cosa, stai cercando di assegnare un int[][] ad un float[][] che è comunque sbagliato.

    Ci sono due forme corrette:

    a) Inizializzazione nella forma "abbreviata":
    codice:
    int[][] mat = {
        { 1, 2, 3 },
        { 4, 5, 6 },
        { 7, 8, 9, 10, 11 }
    };

    b) Inizializzazione con quello che viene chiamato un "anonymous" array:
    codice:
    int[][] mat = new int[][] {
        { 1, 2, 3 },
        { 4, 5, 6 },
        { 7, 8, 9, 10, 11 }
    };

    La forma a) può essere usata solo per inizializzare la variabile nel punto stesso della sua definizione.
    La forma b) può essere usata per assegnare un nuovo array ad una variabile già definita in precedenza o per passare "al volo" un array come argomento ad un metodo/costruttore.
    Ultima modifica di andbin; 11-08-2018 a 14:07
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di filips
    Registrato dal
    Sep 2011
    residenza
    Seconda stella a destra (questo e' il cammino)
    Messaggi
    155
    Quote Originariamente inviata da andbin Visualizza il messaggio
    La forma b) può essere usata per assegnare un nuovo array ad una variabile già definita in precedenza o per passare "al volo" un array come argomento ad un metodo/costruttore.
    Ecco l'equivoco: si tratta dunque di un errore tipografico quel secondo uguale di assegnazione, perché è questa forma dell'anonymous array che viene utilizzata. Grazie mille.

    Quindi, riferendoci a quello che hai detto, in pratica è (b) la forma utilizzata prevalentemente; quella dell'esempio, rappresenta il passaggio diretto dell'array al costruttore, e in generale, per un metodo qualunque, si avrà qualcosa del genere:

    codice:
    metodo(new int[][] {
        { 1, 2, 3 },
        { 4, 5, 6 },
        { 7, 8, 9, 10, 11 },...,arg_n)
    };
    Ho capito bene?
    Per fare un tavolo ci vuole un fiore.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da filips Visualizza il messaggio
    in pratica è (b) la forma utilizzata prevalentemente;
    Se devi inizializzare subito una variabile array con dei dati nel momento stesso della definizione della variabile, la forma preferibile è quella abbreviata (forma a) detta prima).


    Quote Originariamente inviata da filips Visualizza il messaggio
    quella dell'esempio, rappresenta il passaggio diretto dell'array al costruttore, e in generale, per un metodo qualunque, si avrà qualcosa del genere:

    codice:
    metodo(new int[][] {
        { 1, 2, 3 },
        { 4, 5, 6 },
        { 7, 8, 9, 10, 11 },...,arg_n)
    };
    Ho capito bene?
    La forma con anonymous array (b) deve essere usata se:
    - vuoi assegnare successivamente un nuovo array ad una variabile o se la inizializzi dopo che è stata solo definita
    - vuoi passare un array "al volo" ad un metodo o costruttore.

    codice:
    int[] arr = { 1, 2, 3 };
    
    arr = { 10, 11, 12 };   // NO !!
    arr = new int[] { 10, 11, 12 };   // Sì
    codice:
    public void unMetodo(int[] arr) { .... }
    codice:
    xyz.unMetodo({1, 2, 3});   // NO !!
    xyz.unMetodo(new int[] {1, 2, 3});   /// Sì
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di filips
    Registrato dal
    Sep 2011
    residenza
    Seconda stella a destra (questo e' il cammino)
    Messaggi
    155
    Grazie mille per queste chiare specificazioni. Il corso che sto leggendo tuttavia (e purtroppo) non è così dettagliato.
    Per fare un tavolo ci vuole un fiore.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.