Foro de elhacker.net

Programación => Java => Mensaje iniciado por: elbrujo20 en 17 Noviembre 2015, 07:16 am



Título: Duda en codigo
Publicado por: elbrujo20 en 17 Noviembre 2015, 07:16 am
Buenas weno tengo unda duda ya que debo me pidieron que explique que errorres tiene este codigo solo que no encuentro ninguno ya lo pase a netbeans y no me da error incluso si se ejecuta e imprime algo es por eso que no entiendo por que dic que busque errores alguien nota algun error en el codigo por que yo no le veo ninguno

String arreglo[] = new String[4];
       
        arreglo[0]="a";
        arreglo[1]="sistemas";
        arreglo[2]="programacion";
        arreglo[3]="hola";
       
        try{
            String cadena=arreglo[4];  // creo que aqui puede ser error por que no existe cadena pero no me marca error no estoy seguro
       
        }
        catch(IndexOutOfBoundsException e){
        System.out.println("Hay un error!");
        }
   
    }


Título: Re: Duda en codigo
Publicado por: DarK_FirefoX en 17 Noviembre 2015, 20:08 pm
Pues si hay un error! Lo que pasa es que lo está capturando el catch y mostrando un mensaje en consola! Deberías buscar un poco y leer sobre el manejo de excepciones en Java.

Estás declarando un String de cuatro posiciones las cuales las rellenas con estas lineas:

Código
  1. arreglo[0]="a";
  2. arreglo[1]="sistemas";
  3. arreglo[2]="programacion";
  4. arreglo[3]="hola";

Deberías acostumbrarte que en Java los indices empiezan en 0.

Luego utilizas un bloque try{}catch{} y ejecutas en el catch la siguiente línea:

Código
  1. String cadena=arreglo[4];

Énfasis en arreglo[4], este índice no existe! Por lo tanto se sale de los límites de la estructura. Esta excepción es capturada por:

Código

Y te ejecuta la siguiente línea:

Código
  1. System.out.println("Hay un error!");

Que te muestra eso en consola.

Salu2s

PD: Utiliza las etiquetas GeSHi para publicar código


Título: Re: Duda en codigo
Publicado por: furciorifa en 19 Noviembre 2015, 02:22 am
Tu error está en el try-catch primero debes reservar un espacio para cadena antes de asignarle arreglo[];