[ Foro de Java ]

Error de sintaxis

29-Jun-2018 18:16
Invitado (Ethan)
1 Respuestas

Hola muy buenos dias a todos, estaba realizando el ejercicio numero 7.4.1 del curso de java que establezca lo siguiente:

Crea un programa que pida al usuario 5 números reales, que guardará en un array. Luego calculará y mostrará su media (la suma de todos los datos, dividida entre la cantidad de datos) y los valores que están por encima de la media.

Realicé el ejercicio como se me pedía al compilarlo muestra todo lo que indica en el ejercicio pero despues de dar los numeros mayores a la media me lanza un excepción, el error  en cuestión es el siguiente:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at javaapplication16.JavaApplication16.main(JavaApplication16.java:27)

La posicion "27" en el texto es la siguiente: if(datos[i]>3){
A continuación les presento el codigo:


import java.util.Scanner;

public class JavaApplication16 {

    public static void main(String[] args) {

        Scanner teclado = new Scanner(System.in);
        final int TAMANIO = 5;
        double total = 0;
 
        int[] datos = new int[TAMANIO];
        for (int i=0; i<TAMANIO; i++)
        {
            System.out.print( "Deme el dato numero "+i+": " );
            datos[i] = teclado.nextInt();
        }
 
        for (int i=TAMANIO-1; i>=0; i--)
            total += datos[i]; 
            System.out.println("La media de los datos es: ");
            System.out.println(total / TAMANIO);
            System.out.println("Los datos mayores a la media son: ");
        for (int i=1; i<=5; i++)
        {
            if(datos[i]>3){
                
            System.out.println(datos[i]);
            }
        }          
    }
}


Quisiera saber como hacer para que no me aparezca la excepción al final ya que, en sí, el  codigo cumple con su función. Si de algo sirve estoy utilizando NetBeans IDE 8.2.
Muchas gracias por leer y espero que puedan resolver mi duda.


11-Aug-2018 12:33
Nacho Cabanes (+83)

Perdona el retraso en contestar. Esa excepción indica que estás desbordando los límites del array. Por ejemplo, si el array tiene 5 elementos, sólo podrás ir de las posiciones 0 a 4.

En tu caso usas TAMANIO en casi todas partes... menos en el último bucle, que emplea un 5 como límite, así que fallará con tamaños menores que 6.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)