Explicación de un ejercicio de matriz unidad en lenguaje Java.

Iniciado por proview, 3 Marzo 2013, 17:22 PM

0 Miembros y 1 Visitante están viendo este tema.

proview

Hola.

A ver si podéis resolverme esta duda( he leído las normas y no pido que me hagáis el ejercicio,ya que hecho ya está). Tengo un ejercicio de una matriz unidad,donde todos sus números son ceros excepto los de la diagonal principal.Os paso el código:

public static void main (String[] args) {
  int [][] mUnidad= new int [4][4];
 
   for (int i=0; i < mUnidad.length; i++) {
       for (int j=0; j < mUnidad.length; j++) {
           if (i == j) {
               mUnidad[j]=1;
           }else {
               mUnidad[j] = 0;
           }
       }
   }

   for (int i=0; i < mUnidad.length; i++) {
       for (int j=0; j < mUnidad.length; j++) {
           System.out.print(mUnidad[j]+"\t");
       }
       System.out.println("");
   }
 }
}


Y el resultado sería:

1   0   0   0   
0   1   0   0   
0   0   1   0   
0   0   0   1


Pues mi duda,no entiendo en que momento del for hace que la fila sea igual a la columna para que ponga 1 ó distinta para que sea 0. Porque por ejemplo he intentado darle unos valores a la matriz,es decir, inicializarla para ver manualmente donde se repite y donde va el 1 o el 0 y puse esto:


int [][]mUnidad={
            {1,2,2,3},
            {5,6,5,3},
            {7,8,9,10},
            {13,2,2,3}
            };

Y bueno el resultado es el mismo, la matriz unidad con la diagonal a 1. Por lo que me deja perdido completamente. El que tengo más duda es en el primer for de i y j porque el segundo se que recorre lo guardado en el primer for y luego no muestra por pantalla.

¿Podéis sacarme de dudas ante este ejercicio? Gracias de antemano. Un saludo

Chuidiang

Hola:

No es difícil, el doble bucle de for i / for j con el if(i==j) dentro para poner 1.

El for i recorre las filas, es decir fila 0, fila 1, fila 2....

Para cada fila (ejemplo, fila 0), tienes dentro un bucle for j que recorre las columnas, es decir, vas teniendo fila0 columna0, fila0 columna1, fila0 columna2, ...

y el if mira si fila==columna pone un 1 y si no un 0.

Luego se repite para la fila1, luego para la fila2, ...

Se bueno.

proview

Hola.

Gracias por responderme, al leerte se me ocurrió algo que probé en el eclipse y lo terminé de entender.

Un saludo.