Java - Ayuda con ciclo en matriz de enteros

   
Vista:
Imágen de perfil de Ricardo

Ayuda con ciclo en matriz de enteros

Publicado por Ricardo (5 intervenciones) el 08/09/2015 16:13:22
Saludos a tod@s!

Tengo un problema con un ejercicio de matrices, que pide lo siguiente:

Un método llamado sumaAcumCol, que retorna true si para todas las filas,
en la última columna se encuentra la suma de los valores enteros de dicha
fila. En caso contrario retorne false.
Por ejemplo:

matriz_zpstr9evfsw

3+10+1=14
0+2+2 = 4
7+5+8 = 20
10+2+11 = 23

En este caso, el método retornaría true.

Este es el código que tengo hasta ahora, pero aunque la última columna no sea la suma de la fila me sigue indicando true indistintamente.

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
public class SumaCol {
 
  public static void main(String[] args){
 
    int[][] intMatrix = {{3, 10, 1, 14}, {0, 2, 2, 4}, {7, 5, 8, 20}, {10, 2, 11, 23}};
 
    boolean sumOK = false;
    int sumaAcum = 0;
    int colValue = 0;
 
    for(int row = 0; row < intMatrix.length; row++) {
      colValue = intMatrix[row][intMatrix[row].length - 1];
      for(int column = 0; column < intMatrix[row].length - 1; column++){
        sumaAcum += intMatrix[row][column];
 
        if(sumaAcum == colValue) {
          sumOK = true;
                }
            }
            sumaAcum = 0;
        }
 
    System.out.println(sumOK);
 
  }
 
}

Todos sus consejos y sugerencias serán de muchísima utilidad.
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

Ayuda con ciclo en matriz de enteros

Publicado por Tom (911 intervenciones) el 08/09/2015 18:53:18
1
2
3
for(int row = 0; row < intMatrix.length; row++) {
      sumaAcum = 0;
      ...
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 Ricardo

Ayuda con ciclo en matriz de enteros

Publicado por Ricardo (5 intervenciones) el 08/09/2015 19:06:42
Muchas Gracias Tom ya probé esa opción, pero me sigue dando el mismo problema.

Acá está el nuevo código que imprime los cambios en la variable sumOK para darle seguimiento, creo que el asunto está en que si la suma en última fila está correcta la variable queda en true y debería dar true SOLO si la comprobación es correcta en TODAS las filas...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
]boolean sumOK = false;
        int sumaAcum = 0;
        int colValue = 0;
 
        for (int row = 0; row < intMatrix[0].length; row++) {
          sumaAcum = 0;
          for (int column = 0; column < intMatrix.length - 1; column++) {
            System.out.println("Total Fila " + row + " ---> " + "Suma Acum. Fil " + row + " Col " + column);
            sumaAcum += intMatrix[row][column];
            //System.out.println(sumaAcum);
            colValue = intMatrix[row][intMatrix[row].length - 1];
            System.out.println(colValue + " ------------------> " + sumaAcum);
 
            if(colValue == sumaAcum) {
               sumOK = true;
            }
            else {
               sumOK = false;
            }
            System.out.println(sumOK + "\n");
          }
 
        //sumaAcum = 0;
        }

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

Ayuda con ciclo en matriz de enteros

Publicado por Tom (911 intervenciones) el 09/09/2015 09:43:30
Estaba mejor tu primera versión.
1
2
3
4
5
6
7
8
9
boolean sumOK = true;
  ...
  ...
    if(colValue != sumaAcum) {
      sumOK = false;
    }
  }
...
...
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

Ayuda con ciclo en matriz de enteros

Publicado por Xavier Casellas (12 intervenciones) el 09/09/2015 22:43:52
Una manera para solucionarlo seria por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
String igual = "0";
for (int column = 0; column < intMatrix.length - 1; column++)
{
 
	sumaAcum += intMatrix[row][column];
	colValue = intMatrix[row][intMatrix[row].length - 1];
	System.out.println(colValue + " ------------------> " + sumaAcum);
	if(colValue != sumaAcum)
	{
		igual+="1";
	}
}
if(igual.equals("0"))
{
	System.out.println("Todas las sumas correctas!);
}

Se crea una variable que en caso de que las filas siempre sumen bien, no la alterara... Asi funcionaria
Atentamente,
Xavier
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 Ricardo

Ayuda con ciclo en matriz de enteros

Publicado por Ricardo (5 intervenciones) el 11/09/2015 16:02:15
Muchas gracias a ambos por la ayuda!
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