[java] problema esercizio array

Discussione in 'Java' iniziata da Andrespo, 3 Giugno 2018.

  1. Andrespo

    Andrespo Nuovo Utente

    Registrato:
    3 Giugno 2018
    Messaggi:
    5
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ciao a tutti, come da titolo ho avuto un problema con un esercizio in java sugli array.
    Premetto che ho appena incominciato a studiare il linguaggio Java.
    Vorrei stampare il mio array alternando i suoi elementi ....
    esempio -> primo, ultimo,secondo, penultimo...etc

    Il mio programma è questo..

    Codice:
    package javaapplication41;
    public class JavaApplication41 {
        public static void main(String[] args) {
            int numeri[] = {1,2,3,4,5,6,7,8,9,10};
            int l = numeri.length;
            for( int i = 0; i < l; i++ )
            {
                    System.out.println(numeri);
                    System.out.println(numeri[l-i]);                line 21
            }
        }
    }
    il programma mi da il seguente errore...
    run:
    1
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
    at javaapplication41.JavaApplication41.main(JavaApplication41.java:21)
    C:\Users\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
    BUILD FAILED (total time: 0 seconds)

    Grazie in anticipo per il vostro aiuto
     
    Ultima modifica: 3 Giugno 2018
  2. Max 1

    Max 1 Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    29 Febbraio 2012
    Messaggi:
    3.323
    Mi Piace Ricevuti:
    253
    Punteggio:
    83
    Sesso:
    Maschio
    @Andrespo
    Da regolamento del forum, come tutti noi sei tenuto ad usare il tag code.gif quando posti del codice, oppure la funzione codice dalla barra degli strumenti
    box inserisci 2.png.JPG
    Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
    Grazie
    Per questa volta te lo sistemo io ma mi raccomando per il futuro
    Evita anche di mettere una riga vuota tra istruzione e istruzione altrimenti diventa talmente lungo e illegibile
     
  3. Raziel84

    Raziel84 Nuovo Utente

    Registrato:
    4 Giugno 2018
    Messaggi:
    5
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Anch'io ho da poco iniziato con java e un esercizio simile credo di averlo già svolto. Devi imparare a ragionare per indici con gli array (e le matrici) per poter scorrere i suoi elementi e trovare soluzioni idonee a seconda degli strumenti in tuo possesso.
    Il mio consiglio è quello di usare due indici e una variabile temporanea per immagazzinare il dato da transitare. Se devi spostare il primo elemento alla fine, il secondo che diventa penultimo, e così via... allora il codice che potresti usare sarebbe:

    Codice:
    // Prima del main
    import java.util.Arrays;
    
    // Ciclo da usare dentro il main
    for (int i = 0, j = numeri.lenght-1; i < numeri.lenght/2; i++, j--)
    {
    int temp = numeri[i];
    numeri[i] = numeri[j];
    numeri[j] = temp;
    }
    
    System.out.println(Arrays.toString(numeri));
    In pratica ottieni tutto l'array capovolto. Spero di esserti stato utile.
     
  4. Andrespo

    Andrespo Nuovo Utente

    Registrato:
    3 Giugno 2018
    Messaggi:
    5
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    @Raziel84
    Ciao Raziel84, prima di tutto vorrei ringraziarti per la tua risposta.:)
    Quello che cercavo di capire però era il perché mi uscisse tale errore nel mio programma(non credo di aver scritto nulla di sbagliato).
     
  5. Raziel84

    Raziel84 Nuovo Utente

    Registrato:
    4 Giugno 2018
    Messaggi:
    5
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Da errore perchè si stampa nel System della tua linea 21 un valore che sfora il limite array.
    Ricordati che l'array che hai creato ha lunghezza 10, ma i valori in esso contenuti sono memorizzati nelle posizioni che vanno da 0 a 9! Appena entra nel for con i = 0, l'operazione che viene eseguita nel System interpreta l'istruzione come "stampa l'elemento presente nella casella numeri[l-i]". Ma se l = numeri.lenght (cioè 10) e i = 0 allora capisci che non c'è nessun valore da stampare in posizione 10! E quindi ecco l'errore OutOfBounds.
     
  6. Andrespo

    Andrespo Nuovo Utente

    Registrato:
    3 Giugno 2018
    Messaggi:
    5
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    @Raziel84
    Raziel84 grazie mille, è stato un errore abbastanza banale, non ci avevo pensato.
     
Sto caricando...

Condividi questa Pagina