Metodo array

Eu construi um simples programinha de array bidimensional, acontece que declarei o método da seguinte forma:

int somaDiagonal( int[][] arr ) { ... //soma a diagonal principal de uma matriz. }

quando no programa principal eu passo o array bidimensional como parametro e dá erro:

[code]int numeros[][] = new int[3][3];

… //preenche o array

int soma = somaDiagonal( numeros );[/code]

Daí quando vou compilar me aparece o seguinte erro na linha q chamo o método:

non-static method somaDiagonal(int[][]) cannot be referenced from a static context
int soma = somaDiagonal( numeros );

Alguém sabe me dizer o que estou fazendo de errado?

Desde já agradeço-lhes a atenção!!!

provavelmente tu deve estar tentando chamar esse método de main()… e como main é static, teu método tb precisa ser static pra poder chamá-lo… ou atravéz de uma referencia ao objeto da classe q contém ele

Mas o código que chamo o método:

int soma = somaDiagonal( numeros );

Está dentro do método public static void main(String args[]) e o método somaDiagonal(int[][] arr) está dentro da classe, como também o método anterior.

abaixo o código:

[code]class ArrayBidimensional {

public static void main(String args[]) {

	int numeros[][] = new int[3][3];

	for(int i = 0; i < numeros.length; i++) {

		for(int j = 0; j < numeros[0].length; j++) {

			int x = (int)(Math.random() * 10);

			numeros[i][j] = x;

		}

	}

	for(int lin = 0; lin < numeros.length; lin++) {

		System.out.println();

		for(int col = 0; col < numeros[0].length; col++) {

			System.out.print(" "+numeros[lin][col]);

		}

	}

	System.out.println();
	System.out.print("Soma da Diagonal Principal: ");
	int diago = somaDiagonal( numeros );
	System.out.println( diago );

}

int somaDiagonal( int[][] arr ) {

	int soma = 0;

	for(int i = 0; i < arr.length; i++) {

		for(int j = 0; j < arr[0].length; j++) {

			if(i == j)
				soma += arr[i][j];

		}

	}

	return soma;

}

}[/code]

Eu sei. Foi exatamente oq eu previ. Declare o seu método somaDiagonal como static e problema resolvido. Ou chame ele assim:

int soma = new ArrayBidimensional().somaDiagonal( numeros );

Matheus,

Era isso mesmo… foi mancada minha… tinha um exemplo anterior que eu tinha feito que fiz a referência para o objeto.

Muito Obrigado!!! Um Abraço!!!