[java] problema esercizio array

Andrespo

Nuovo Utente
3 Giu 2018
6
0
1
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:

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.246
324
83
@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
 

Raziel84

Nuovo Utente
4 Giu 2018
5
0
1
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.
 

Andrespo

Nuovo Utente
3 Giu 2018
6
0
1
@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).
 

Raziel84

Nuovo Utente
4 Giu 2018
5
0
1
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.