Java - Sumando Matriz No IMPRIME

 
Vista:
Imágen de perfil de jose carlos
Val: 3
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

Sumando Matriz No IMPRIME

Publicado por jose carlos (2 intervenciones) el 20/09/2017 01:09:10
Buen dia tengo un error cuando hago la suma de las columnas
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
C:\Users\usuario\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1

No imprime el resultado por que es -1 tengo que igualar l a 0 alguien que pueda ayudarme que muestre los resultados?


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
public void ejerc10() {
 
        int columna = 0, fila = 0,suma;
      //automatico  Random r = new Random();
        int[][] matriz = {
            {3, 1, 2, 1, 2},
            {2, 5, 3, 3, 2},
            {1, 3, 1, 0, 2},
            {3, 2, 1, 3, 1}};
 
        for (int i = 0; i < matriz.length; i++) {
            for (int j = 0; j < matriz[i].length; j++) {
                System.out.print(matriz[i][j] + " ");
            }
            System.out.println();
        }
        //LA SUMATORIA MAYORES IGUALES
        System.out.println();
        System.out.println("Resultado de la suma :");
        for (int i = 0; i < matriz.length; i++) {
            suma = 0;
            for (int j = 0; j < matriz[i].length; j++) {
              suma += matriz[i-1][j] + matriz[i+1][j] + matriz[i][j-1] + matriz[i][j+1];
                if (suma > 8) {
                    fila = i;
                    columna = j;
                }
               }
            System.out.print("(" + fila + "," + columna + ")");
        }
        System.out.println();
    }
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: 80
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

Sumando Matriz No IMPRIME

Publicado por Juan (108 intervenciones) el 20/09/2017 13:42:50
Buenas jose carlos

El problema es que estás intentando comenzar la coordenada i en -1, y los array siempre comienzan en 0. Prueba a modificar eso y nos cuentas.

Un saludo
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 Jose
Val: 130
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Sumando Matriz No IMPRIME

Publicado por Jose (46 intervenciones) el 20/09/2017 16:49:10
Hola

no entiendo muy bien que intentas hacer lograr a sumar de esta forma:
1
2
3
4
5
6
7
8
9
10
11
for (int i = 0; i < matriz.length; i++) {
    suma = 0;
    for (int j = 0; j < matriz[i].length; j++) {
      suma += matriz[i-1][j] + matriz[i+1][j] + matriz[i][j-1] + matriz[i][j+1];
        if (suma > 8) {
            fila = i;
            columna = j;
        }
       }
    System.out.print("(" + fila + "," + columna + ")");
}

Así que realizare una corrección para que ya no te el problema con el -1, y mantenga tu lógica, pero no una mejora dado que no se lo que quieres lograr.

Lo que haré es poner los contadores i y j en 1, esto es porque tu accedes a la matriz con i-1 y j-1, además tienes los accesos i+1 y j+1
por lo tanto si infiere que estas accediendo a tres posiciones por iteración (anterior,actual,siguiente), por lo cual para no salirte de los limites de la matriz, debo empezar en una posición posterior a la inicial (0) para que i-1=0, y terminar en matriz.length-1, debido a i+1, con esto aseguro, que el ultimo i+1=matriz.length-1.
después de esta corta explicación, el código queda así:


1
2
3
4
5
6
7
8
9
10
11
for (int i = 1; i <( matriz.length-1); i++) {
    suma = 0;
    for (int j = 1; j < (matriz[i].length-1); j++) {
      suma += matriz[i-1][j] + matriz[i+1][j] + matriz[i][j-1] + matriz[i][j+1];
        if (suma > 8) {
            fila = i;
            columna = j;
        }
       }
    System.out.print("(" + fila + "," + columna + ")");
}



y bueno listo, nos cuenta como te fue.

saludos.
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