Java - ¿Por qué se produce un java.lang.ArrayIndexOutOfBoundsException, alguien me ayuda?

 
Vista:
sin imagen de perfil
Val: 13
Ha aumentado su posición en 7 puestos en Java (en relación al último mes)
Gráfica de Java

¿Por qué se produce un java.lang.ArrayIndexOutOfBoundsException, alguien me ayuda?

Publicado por Xiaolin (6 intervenciones) el 20/03/2019 00:58:08
ºTengo un problema con el siguiente programa. Al llegar a la condición if(numeros[j] < numeros[j+1]) me da un error de java.lang.ArrayIndexOutOfBoundsException. No consigo de encontrar al fallo. ¿Alguien me ayuda a resolverlo?. Grácias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package ejerciciosJava;
 
import java.util.Scanner;
 
public class OrdenarNúmeros {
 
    public static void main(String args[]) {
        int contador = 0, num, a = 0, i, j;
        int[] numeros = new int[5];
 
        Scanner teclado = new Scanner(System.in);
 
        do{
            System.out.println("Introduzca valores (0 para finalizar): ");
            num = teclado.nextInt();
 
            if (num != 0) {
                numeros[contador] = num;
                contador++;
            }
        }while (num != 0);
 
        for (i = 0; numeros.length > i; i++) {
            for (j = 0; numeros.length > j; j++) {
                if (numeros[j] < numeros[j + 1]) { //JUSTO AQUÍ ME DA EL ERROR!!
                    a = numeros[j];
                    numeros[j] = numeros[j + 1];
                    numeros[j+ 1] = a;
                }
            }
        }
 
        for (i = 0; i < numeros.length; i++) {
            System.out.print(numeros[i] + ",");
        }
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 69
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

¿Por qué se produce un java.lang.ArrayIndexOutOfBoundsException, alguien me ayuda?

Publicado por Jonay Zevenzui (23 intervenciones) el 20/03/2019 12:37:18
Creo que puede venir porque estás sumando 1 al índice del array numeros, por lo que cuando estás en la última posición del array y le sumas 1 te sales de rango, prueba esto:
1
2
if(numeros[j] < numeros[j] + 1){
}
Lo mismo en todos los puntos que tengas la expresión:
1
numeros[j+1]
Además al array le das una dimensión de 5, deberías de controlar que el número de valor introducidos no sean más de 5

Si lo que quieres es ordenar el array mirate esto:
https://es.stackoverflow.com/questions/106335/ordenar-arreglo-de-menor-a-mayor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 13
Ha aumentado su posición en 7 puestos en Java (en relación al último mes)
Gráfica de Java

¿Por qué se produce un java.lang.ArrayIndexOutOfBoundsException, alguien me ayuda?

Publicado por Xiaolin (6 intervenciones) el 20/03/2019 15:35:43
Muchas gracias por tu ayuda. Lo probaré y ya te diré algo. :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 13
Ha aumentado su posición en 7 puestos en Java (en relación al último mes)
Gráfica de Java

¿Por qué se produce un java.lang.ArrayIndexOutOfBoundsException, alguien me ayuda?

Publicado por Xiaolin (6 intervenciones) el 20/03/2019 16:05:03
Ya encontre la respuesta, en el bucle for, el segundo for, tengo que poner,
1
for ( j = 0 ; numeros.length - 1 > j ; j++)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Oliver
Val: 189
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

¿Por qué se produce un java.lang.ArrayIndexOutOfBoundsException, alguien me ayuda?

Publicado por Oliver (67 intervenciones) el 20/03/2019 19:27:39
siempre recuerda agregar el -1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar