Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [JAVA] Errore strano con array dinamici

    Ciao a tutti, sto facendo un piccolo programma di gestione di cabine per un lido e sto avendo un problema molto strano con un array dinamico.

    Vi spiego nei dettagli:

    L'array dinamico si chiama mappaCabina ed è un attributo della classe Gui.

    Ho un oggetto chiamato cabina che prevede, le coordinate XY della cabina, il numero e il settore.

    Ho creato una funzione che automaticamente si va a prendere le coordinate delle cabine disegnate su di un immagine (coordinate che mi serviranno successivamente per un altro lavoro) .

    Dentro questa funzione c'è un ciclo FOR che effettua questo lavoro.

    E qui arriva l'errore.

    Alla fine del ciclo l'ultimo oggetto che viene inserito viene sovrascritto su tutti quelli aggiungi precedentemente e non riesco a capire per quale motivo.

    Se controllo i dati contenuti nell'array nel debug i dati fino all'ultimo inserimento sono tutti corretti e presenti, ma appena esco dal ciclo o dalla funzione vengono tutti sostituiti con l'ultimo inserito.

    Vi posto il codice:

    codice:
    public void calcolaCoordinateFila(int x, int y, int nFila, String settore){
            int w = 27;
            int numero = 1;
            
            Cabina c = new Cabina();
            c.x = x;
            c.y = y;
            c.numero = 1 + nFila;
            c.settore = settore;
            mappaCabina.addElement(c);
            
            for(int j = 0; j < 13; j++){
                x = x - w;
                numero = (numero+1) + nFila;
                c.x = x;
                c.y = y;
                c.numero = numero;
                c.settore = settore;
                mappaCabina.addElement(c);
            }
        }
    Su google non ho trovato niente e neanche nel forum, qualcuno mi può aiutare???
    Ultima modifica di diabolik03; 08-06-2016 a 13:24

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    L'oggetto Cabina va ricreato nuovo (con la new) ad ogni ciclo del for... ogni ciclo del for lavora sempre sulla stessa istanza di Cabina che semplicemente viene ri-aggiunta di nuovo alla mappa... cioè, lo stesso identico oggetto viene aggiunto N volte alla mappa.

    codice:
    for(int j = 0; j< 13; j++) {
       c = new Cabina();
       ...
    }

    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

  3. #3
    Grazie!!!! Ho provato e funziona!!!! Però quando controllavo nel debug perchè i dati inseriti erano giusti???

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.