Desbordamiento de array

63 views
Skip to first unread message

JCarlos

unread,
Nov 14, 2009, 3:53:42 AM11/14/09
to JavaSOS, capem...@yahoo.es
Buenas, seguro que para muchos esto es algo muy simple pero yo no lo
entiendo.

En teoría el siguiente código debería recorrer el Array y mostrarlo
sin problemas, pero da error:

char letras [] = {'A',' ','v','e','r','.','.','.'};

for ( int j : letras){
System.out.print(letras[j]);
}

Produce el siguiente error en la ejecución:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
65
at prueba.Main.main(Main.java:54)
Java Result: 1

¿Alguien sabe porque se desborda?

Gracias de antemano.

Manuel Nogales

unread,
Nov 16, 2009, 5:39:37 AM11/16/09
to jav...@googlegroups.com
tienes el código mal, debería ser:


       char letras [] = {'A',' ','v','e','r','.','.','.'};

       for ( char j : letras){
           System.out.print(j);
      }

En tu código estabas haciendo un casting de char a int, por lo q j tenia el valor del código de 'A'.

Manuel Nogales Tejado
nogales...@gmail.com

Nicolas A. Echeverria O.

unread,
Nov 16, 2009, 7:22:09 AM11/16/09
to jav...@googlegroups.com
exacto, es decir, te transforma el caracter A a su equivalente ASCII, es decir un 65 y trata de imprimir esa posicion, Saludos!

Gregorio Mena Rodríguez

unread,
Nov 16, 2009, 5:20:57 AM11/16/09
to jav...@googlegroups.com
   Hola,

   El problema está en que la variable j tomará el valor ASCII de 'A', '', etc... y alguno de estos valores es superior a la longitud del array. Es decir, imagina que el código de la A sea 45, pues estarías haciendo litras[45] y por eso el pete. Puedes hacerlo de dos formas:


for ( int j : letras){
       System.out.print(j);
}

ó

for ( int j = 0; j < letras.length; j++){
       System.out.print(letras[j]);
}

saludos.
Reply all
Reply to author
Forward
0 new messages