Foro de elhacker.net

Programación => Java => Mensaje iniciado por: KaRaLLo en 11 Enero 2012, 22:59 pm



Título: Duda con un array, imprimir sus valores a la inversa.
Publicado por: KaRaLLo en 11 Enero 2012, 22:59 pm
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.

Código:
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.

Código:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at areglosiniciar.Main.main(Main.java:20)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)


Título: Re: Duda con un array, imprimir sus valores a la inversa.
Publicado por: bewa en 12 Enero 2012, 01:26 am
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.

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


Título: Re: Duda con un array, imprimir sus valores a la inversa.
Publicado por: [Case] en 12 Enero 2012, 01:32 am
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í:

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

Código:
			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


Título: Re: Duda con un array, imprimir sus valores a la inversa.
Publicado por: corneliusjesus en 12 Enero 2012, 10:39 am
Si es correcto


Título: Re: Duda con un array, imprimir sus valores a la inversa.
Publicado por: Debci en 12 Enero 2012, 15:52 pm
corneliusjesus, deja de ensuciar posts con respuestas insustanciales.

Saludos


Título: Re: Duda con un array, imprimir sus valores a la inversa.
Publicado por: 1mpuls0 en 13 Enero 2012, 19:18 pm
También puedes hacer lo siguiente.

Código
  1. public class Main{
  2. public static void main(String args[]){
  3. new Main();
  4. }
  5.  
  6. public Main(){
  7. double [] numeros=new double [6];
  8. System.out.println("Numeros");
  9. for(int i=0;i<numeros.length;i++){
  10. numeros[i]=Math.floor((Math.random()*50+1));
  11. System.out.print("["+numeros[i]+"]");
  12. }
  13. System.out.println("\nNumeros invertidos");
  14. for (int x=numeros.length-1;x>=0;x--){
  15. System.out.print("["+numeros[x]+"]");
  16. }
  17. }
  18. }
  19.  

x=numeros.length-1

Saludos.


Título: Re: Duda con un array, imprimir sus valores a la inversa.
Publicado por: alexis33de en 13 Enero 2012, 20:23 pm
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


Título: Re: Duda con un array, imprimir sus valores a la inversa.
Publicado por: KaRaLLo en 21 Enero 2012, 14:47 pm
Muchas gracias :)