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 originalpublic class Matriz {
private int matriz[][];
public Matriz(int x, int y) {
//Con esto, estarías ocultando la variable de instancia matriz
//int matriz[][]=new int [x][y];
//Así es correcto
matriz = new int[x][y];
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
if (i == j) {
matriz[i][j] = 1;
} else {
matriz[i][j] = 0;
}
}
}
}
public int numeroFilas() {
int f = matriz.length;
return f;
}
public int numeroColumnas() {
int c = matriz[0].length;
return c;
}
public static void main
(String[] args
) {
Matriz m = new Matriz(2, 2);
System.
out.
println(m.
numeroColumnas()); }
}