Ver Mensaje Individual
  #8 (permalink)  
Antiguo 25/05/2012, 14:08
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 7 meses
Puntos: 344
Respuesta: arrays bidimensionales principiante blueJ

Lo que dice Xerelo es cierto.

El problema es que al crear una variable local en el constructor de Matriz (que debe estar en mayúsculas, por cierto), estás ocultando la variable de la instancia (un atributo de la clase) que has creado con el mismo nombre, es decir, mientras se está ejecutando el código dentro del constructor, estás usando la variable local que has creado y no el atributo del mismo nombre.

Eso quiere decir, que la variable local matriz sólo tiene valor hasta que termina el constructor, una vez finalizado, la variable desaparece. Por supuesto, la variable de instancia (con nombre matriz) no está inicializada (porque nunca la has estado usando realmente).

Código Java:
Ver original
  1. public class Matriz {
  2.  
  3.     private int matriz[][];
  4.  
  5.     public Matriz(int x, int y) {
  6.     //Con esto, estarías ocultando la variable de instancia matriz
  7.     //int matriz[][]=new int [x][y];
  8.  
  9.      //Así es correcto
  10.         matriz = new int[x][y];
  11.         for (int i = 0; i < x; i++) {
  12.             for (int j = 0; j < y; j++) {
  13.                 if (i == j) {
  14.                     matriz[i][j] = 1;
  15.                 } else {
  16.                     matriz[i][j] = 0;
  17.                 }
  18.             }
  19.         }
  20.     }
  21.  
  22.     public int numeroFilas() {
  23.         int f = matriz.length;
  24.         return f;
  25.     }
  26.  
  27.     public int numeroColumnas() {
  28.         int c = matriz[0].length;
  29.         return c;
  30.     }
  31.  
  32.     public static void main(String[] args) {
  33.  
  34.         Matriz m = new Matriz(2, 2);
  35.         System.out.println(m.numeroColumnas());
  36.     }
  37. }