Java - ERROR EN MI PROGRAMA

 
Vista:

ERROR EN MI PROGRAMA

Publicado por sagdagdadasd (1 intervención) el 23/06/2019 18:07:31
Mi programa consiste en rellenar de forma aleatoria una matriz de 100x100 con números del 0 al 9 y que al introducir tú un número imprima el número de coincidencias y las posiciones de cada coincidencia.


Sin embargo, cuando se está ejecutando sale el siguiente error:


Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100
at trece.Buscador.main(Buscador.java:24)

He intentado cambiarlo varias veces y no doy con el error ¿Alguna idea/ayuda?

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
import java.util.Scanner;
 
public class Buscador {
 
	public static void main(String[] args) {
		Scanner teclado = new Scanner (System.in);
		int array [][] = new int [100][100];
		for(int i=0; i<100;i++) {
			for(int j=0; j<100;j++) {
				array[i][j]=(int)(Math.random()*8+1);
			}
		}
		System.out.println("Introduzca un número del 1 al 9");
		int arrayX [] = new int [100000];
		int arrayY [] = new int [100000];
		int contadorY=0;
		int contadorX=0;
		int contador=0;
		int k=teclado.nextInt();
		for (int i=0; i<arrayX.length; i++) {
			for (int j=0; j<arrayY.length; j++) {
				if(array[i][j]==k) {
					arrayX[contadorX]=i;
					arrayY[contadorY]=j;
					contador++;
					contadorX++;
					contadorY++;
				}
			}
		}
		System.out.println("Se han encontrado "+contador+" coincidencias en las posiciones:");
		for(int i=0; i<arrayX.length; i++) {
			System.out.println("("+arrayX[i]+" ,"+arrayY[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
Imágen de perfil de Sebastian
Val: 316
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

ERROR EN MI PROGRAMA

Publicado por Sebastian (91 intervenciones) el 23/06/2019 18:29:57
Tu problema es que estas intentando accerder a una posición de la matriz que no existe, por eso se lanza la excepción.
En los dos ciclos que tienes para comparar las coincidencias, en la condición debe ser el tamaño de la matriz "array"


1
2
3
4
5
6
7
8
9
10
11
for (int i=0; i<array.length; i++) {
    for (int j=0; j<array[i].length; j++) {
        if(array[i][j]==k) {
            arrayX[contadorX]=i;
            arrayY[contadorY]=j;
            contador++;
            contadorX++;
            contadorY++;
        }
    }
}

Con eso arreglarias el problema de la excepción que te sale.
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: 147
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

ERROR EN MI PROGRAMA

Publicado por Yamil (2302 intervenciones) el 23/06/2019 18:49:27
array tiene como lenth 100 mientas que arrayX tiene 100000 y estas recorriendo array hasta la longitud de arrayX
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
Imágen de perfil de Billy Joel
Val: 2.026
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

ERROR EN MI PROGRAMA

Publicado por Billy Joel (559 intervenciones) el 23/06/2019 19:04:39
Acá está el codigo corregido con unos cambios:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import java.util.Scanner;
 
public class BuscadorMatriz {
 
    public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in);
        int array[][] = new int[100][100];
        for (int i = 0; i < 100; i++) {
            for (int j = 0; j < 100; j++) {
                array[i][j] = (int) (Math.random() * 8 + 1);
            }
        }
        //int arrayX[] = new int[100000];
        //int arrayY[] = new int[100000];
        //int contadorY = 0;
        //int contadorX = 0;
        //int contador = 0;
        String coordenadas = "";
        System.out.println("Introduzca un número del 1 al 9");
        int k = teclado.nextInt();
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                if (array[i][j] == k) {
                    //arrayX[contadorX] = i;
                    //arrayY[contadorY] = j;
                    //contador++;
                    //contadorX++;
                    //contadorY++;
                    coordenadas += i + ", " + j + ";";
                }
            }
        }
 
        /**
         * imprimimos la matriz
         */
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                System.out.print("[" + (i < 10 ? "0" : "") + i + "," + (j < 10 ? "0" : "") + j + " = " + (array[i][j] == k ? ConsoleColors.YELLOW + k + ConsoleColors.RESET : k) + "]");
            }
            System.out.println();
        }
        /**
         * imprimimos la matriz
         */
 
        coordenadas = coordenadas.substring(0, coordenadas.lastIndexOf(";"));
        String[] c = coordenadas.split(";");
        //System.out.println("Se han encontrado " + contador + " coincidencias en las posiciones:");
        System.out.println("Se han encontrado " + c.length + " coincidencias en las posiciones:");
        //for (int i = 0; i < arrayX.length; i++) {
        for (int i = 0; i < c.length; i++) {
            //System.out.println("(" + arrayX[i] + " ," + arrayY[i] + ")");
            System.out.println((i + 1) + ": " + c[i]);
        }
    }
}
 
class ConsoleColors {
 
    // Reset
    public static final String RESET = "\033[0m";  // Text Reset
 
    // Regular Colors
    public static final String BLACK = "\033[0;30m";   // BLACK
    public static final String RED = "\033[0;31m";     // RED
    public static final String GREEN = "\033[0;32m";   // GREEN
    public static final String YELLOW = "\033[0;33m";  // YELLOW
    public static final String BLUE = "\033[0;34m";    // BLUE
    public static final String PURPLE = "\033[0;35m";  // PURPLE
    public static final String CYAN = "\033[0;36m";    // CYAN
    public static final String WHITE = "\033[0;37m";   // WHITE
 
    // Bold
    public static final String BLACK_BOLD = "\033[1;30m";  // BLACK
    public static final String RED_BOLD = "\033[1;31m";    // RED
    public static final String GREEN_BOLD = "\033[1;32m";  // GREEN
    public static final String YELLOW_BOLD = "\033[1;33m"; // YELLOW
    public static final String BLUE_BOLD = "\033[1;34m";   // BLUE
    public static final String PURPLE_BOLD = "\033[1;35m"; // PURPLE
    public static final String CYAN_BOLD = "\033[1;36m";   // CYAN
    public static final String WHITE_BOLD = "\033[1;37m";  // WHITE
 
    // Underline
    public static final String BLACK_UNDERLINED = "\033[4;30m";  // BLACK
    public static final String RED_UNDERLINED = "\033[4;31m";    // RED
    public static final String GREEN_UNDERLINED = "\033[4;32m";  // GREEN
    public static final String YELLOW_UNDERLINED = "\033[4;33m"; // YELLOW
    public static final String BLUE_UNDERLINED = "\033[4;34m";   // BLUE
    public static final String PURPLE_UNDERLINED = "\033[4;35m"; // PURPLE
    public static final String CYAN_UNDERLINED = "\033[4;36m";   // CYAN
    public static final String WHITE_UNDERLINED = "\033[4;37m";  // WHITE
 
    // Background
    public static final String BLACK_BACKGROUND = "\033[40m";  // BLACK
    public static final String RED_BACKGROUND = "\033[41m";    // RED
    public static final String GREEN_BACKGROUND = "\033[42m";  // GREEN
    public static final String YELLOW_BACKGROUND = "\033[43m"; // YELLOW
    public static final String BLUE_BACKGROUND = "\033[44m";   // BLUE
    public static final String PURPLE_BACKGROUND = "\033[45m"; // PURPLE
    public static final String CYAN_BACKGROUND = "\033[46m";   // CYAN
    public static final String WHITE_BACKGROUND = "\033[47m";  // WHITE
 
    // High Intensity
    public static final String BLACK_BRIGHT = "\033[0;90m";  // BLACK
    public static final String RED_BRIGHT = "\033[0;91m";    // RED
    public static final String GREEN_BRIGHT = "\033[0;92m";  // GREEN
    public static final String YELLOW_BRIGHT = "\033[0;93m"; // YELLOW
    public static final String BLUE_BRIGHT = "\033[0;94m";   // BLUE
    public static final String PURPLE_BRIGHT = "\033[0;95m"; // PURPLE
    public static final String CYAN_BRIGHT = "\033[0;96m";   // CYAN
    public static final String WHITE_BRIGHT = "\033[0;97m";  // WHITE
 
    // Bold High Intensity
    public static final String BLACK_BOLD_BRIGHT = "\033[1;90m"; // BLACK
    public static final String RED_BOLD_BRIGHT = "\033[1;91m";   // RED
    public static final String GREEN_BOLD_BRIGHT = "\033[1;92m"; // GREEN
    public static final String YELLOW_BOLD_BRIGHT = "\033[1;93m";// YELLOW
    public static final String BLUE_BOLD_BRIGHT = "\033[1;94m";  // BLUE
    public static final String PURPLE_BOLD_BRIGHT = "\033[1;95m";// PURPLE
    public static final String CYAN_BOLD_BRIGHT = "\033[1;96m";  // CYAN
    public static final String WHITE_BOLD_BRIGHT = "\033[1;97m"; // WHITE
 
    // High Intensity backgrounds
    public static final String BLACK_BACKGROUND_BRIGHT = "\033[0;100m";// BLACK
    public static final String RED_BACKGROUND_BRIGHT = "\033[0;101m";// RED
    public static final String GREEN_BACKGROUND_BRIGHT = "\033[0;102m";// GREEN
    public static final String YELLOW_BACKGROUND_BRIGHT = "\033[0;103m";// YELLOW
    public static final String BLUE_BACKGROUND_BRIGHT = "\033[0;104m";// BLUE
    public static final String PURPLE_BACKGROUND_BRIGHT = "\033[0;105m"; // PURPLE
    public static final String CYAN_BACKGROUND_BRIGHT = "\033[0;106m";  // CYAN
    public static final String WHITE_BACKGROUND_BRIGHT = "\033[0;107m";   // WHITE
}
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