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

    [Java] Problema con un ciclo for

    Salve ragazzi. Ho un problema che non mi riesco a spiegare in questo frammento di codice:

    codice:
    public void cancellaPrenPassate(){
            for(int i=0; i<pacchetti.length; i++){
                Prenotazione[] pren = pacchetti[i].getPrenotazioni();
                System.out.println(pren[1].toString());
                if(pren!=null)
                    for(int j=0; j<pren.length; j++){
                            System.out.println(pren[1].toString());
                            delPrenotazione(pren[j]);
                    }      
            }
        }
    il problema è che solo il primo println mi stampa l'oggetto pren[1], mentre il secondo println mi stampa l'oggetto pren[2]. Come mai? La chiamata 'delPrenotazione(pren[j])' non va in nessun caso a modificare l'array 'pren'.

    Grazie.

  2. #2
    Ho appena scoperto che praticamente l'intero array 'pren' viene shiftato di -1, ed l'ulimo elemento viene ripetuto 2 volte.
    Cioè diventa, dove n è l'ultimo indice: pren[0]=pren[1], pren[1]=pren[2] ..... pren[n-1]= pren[n], pren[n]=pren[n]

    Sono alquanto perplesso.

  3. #3
    Originariamente inviato da badboy-j
    ...l'intero array 'pren' viene shiftato di -1
    E quale parte di codice dovrebbe occuparsi di questo fantomatico shift se, come tu affermi, il metodo delPrenotazione() non altera l'array?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Originariamente inviato da satifal
    E quale parte di codice dovrebbe occuparsi di questo fantomatico shift se, come tu affermi, il metodo delPrenotazione() non altera l'array?
    Grazie per avermi risposto praticamente con la mia stessa domanda...

    Comunque ho provato e riprovato ma niente. Allora ho chiuso NetBeans e l'ho riaperto e come per 'magia' ha funzionato senza nessuna modifica al codice.


    Una volta il professore di programmazione mi spiegò che possono succedere degli errori in memoria quando mi capitò che stampando un array di int, oltre la sua lunghezza, invece di un errore, mi stampava comunque un intero finale che non centrava niente con quelli nell'array.

    Ad esempio con:
    codice:
    int[] array = {1, 2, 3};
    for(int i=0; i<4; i++)
          System.out.println(array[i]);
    mi stampava:
    codice:
    1
    2
    3
    439749
    questo perchè la porzione di con l'ultimo elemento (439749) è contigua a quella dell'array ed comunque è utilizzata dallo stesso processo.


    ... avrò detto una marea di stronzate!

    Comunque grazie e alla prossima!

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