Duda con un array, imprimir sus valores a la inversa.

Iniciado por KaRaLLo, 11 Enero 2012, 22:59 PM

0 Miembros y 1 Visitante están viendo este tema.

KaRaLLo

Hola, intento que la salida de este arreglo se imprima a la inversa con un bucle for pero, llevo rompiendome todo el día la cabeza y no consigo nada.


package Boletin9_1;

public class Main {

/**
* @param args
*/
public static void main(String[] args) {

double [] numeros=new double [6];

for(int i=0;i<numeros.length;i++){

numeros[i]=Math.floor((Math.random()*50+1));
}
for (int x=6;x>=0;x--){
System.out.println(numeros[x]);
}

    }
}


Me tira esta excepción.


Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at areglosiniciar.Main.main(Main.java:20)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
Los programadores escriben código aunque sepan que no debería funcionar, pero  de todas formas lo intentan, como recompilar todo, después de eso, dios sabe porqué, funciona

bewa

#1
Hola xD. Posiblemente lo hayas solucionado pero por si acaso.

El array tiene 6 casillas: las casillas 0,1,2,3,4,5. Y has inicializado el segundo bucle en 6(x=6), lo tienes que inicializar en 5 porque no existe la casilla 6.


for (int x=5;x>=0;x--){
System.out.println(numeros[x]);
}

[Case]

El error menciona un ArrayIndexOutOfBoundsException, lo que quiere decir es que de alguna forma le estas dando un indice que no se existe.
Por lo que donde esta mal es la forma en que recorre el indice.

Del ultimo for tienes que corrergirlo así:

for (int x=6;x>=0;x--){
System.out.println(numeros[x]);
}


for (int x=5;x>=0;x--){
System.out.println(numeros[x]);
}


Esto es por que los indices de un arreglo se comienzan a contar desde el cero, ejemplo:

A = [1,2,3,4,5];

donde A.length es 5, pero el index inicial es A[0] = 1 y asi hasta A[4] = 5


Debci

corneliusjesus, deja de ensuciar posts con respuestas insustanciales.

Saludos

1mpuls0

También puedes hacer lo siguiente.

Código (java) [Seleccionar]

public class Main{
public static void main(String args[]){
new Main();
}

public Main(){
double [] numeros=new double [6];
System.out.println("Numeros");
for(int i=0;i<numeros.length;i++){
numeros[i]=Math.floor((Math.random()*50+1));
System.out.print("["+numeros[i]+"]");
}
System.out.println("\nNumeros invertidos");
for (int x=numeros.length-1;x>=0;x--){
System.out.print("["+numeros[x]+"]");
}
}
}


x=numeros.length-1

Saludos.
abc

alexis33de

Creo q ya te dieron una buena respuesta, recuerda que el ultimo valor de un array , java no te deja utilizarlo por lo que si quieres imprimir un determinado numero de veces un numero, puedes también declarar tu arreglo con un valor mas al que necesites ejm:

   double  []numeros=new double [7];

Saludos

KaRaLLo

Los programadores escriben código aunque sepan que no debería funcionar, pero  de todas formas lo intentan, como recompilar todo, después de eso, dios sabe porqué, funciona