Error variables estaticas y no estaticas

Pau
19 de Diciembre del 2007

Hola, estoy empezando con java y me está costando un triunfo. Mi programa lee una matriz y calcula el numero de unos separados por ceros de cada fila, pero me da error non-static variable solucion cannot be referenced from a static context. Tengo yo mucho lio con las variables globales, objetos y demas...


import java.io.*;
import java.util.*;

public class Matriz_Solucion {
public int n;
public int [][] solucion = new int[n][n];

public static void main(String args[]) throws IOException {
int n,i,j;

Matriz_Solucion matriz = new Matriz_Solucion();

InputStreamReader isr=new InputStreamReader (System.in);
BufferedReader br=new BufferedReader(isr);
String valor, cadaNum;

System.out.println("Introduce tamaño: ");
valor=br.readLine();
n=Integer.valueOf(valor).intValue();

int [][] m =new int[n][n]; // matriz de entrada


//lectura de la matriz m
for (i=0;i<n;i++){
System.out.println("introduzca fila "+i);
valor=br.readLine();
StringTokenizer st=new StringTokenizer(valor);
for (j=0;j<n;j++) {
cadaNum=st.nextToken();
m[i][j]=Integer.parseInt(cadaNum);
}
}
System.out.println("matriz introducida: ");
matriz.ver(m) ;
matriz.porfilas(m);

matriz.ver(solucion);

}

public void ver (int[][] a) {
int i,j;
int n=a.length;
for (i=0;i<n;i++) {
for(j=0;j<n;j++) {

System.out.print (" "+a[i][j]);
}
System.out.println();
}
}

public void porfilas (int[][] a) {
int n=a.length;
int []fila = new int[n];
int i,j;
for (i=0;i<n;i++) {
System.out.print ("Fila: ");
for (j=0;j<n;j++) {
fila[j]=a[i][j];
}
ver2 (fila);
calcular(fila,i);
}

}
public void ver2 (int[] a) {
int i,j;
int n=a.length;
for(j=0;j<n;j++) {
System.out.print (" "+a[j]);
}
System.out.println();

}

public int [][] calcular (int [] a, int i) {

int n=a.length;
int [][]solucion = new int [n][n];
int indice = n-1;
int indice_sol = n/2+1;
System.out.println ("indice_sol " +indice_sol);
int s_grupo = 0;

while (indice>=0) {
if (a[indice]==1){

s_grupo = s_grupo + 1;
indice = indice-1;
System.out.println ("indice " +indice);

}
else{
if (s_grupo>0) {
System.out.println ("solucion " +s_grupo);
solucion[i][indice_sol-1] = s_grupo;
System.out.println ("[i][indice_sol] " +solucion[i][indice_sol-1]);

s_grupo=0;
indice_sol = indice_sol-1;
}
indice=indice-1;
}

}

if (s_grupo>0){
solucion[i][0]=s_grupo;
System.out.println ("[i][0] " +solucion[i][0]);
indice_sol = indice_sol -1;
}


return (solucion);
}


}