Metodo array

4 respostas
L

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:

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

... //preenche o array

int soma = somaDiagonal( numeros );

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!!!

4 Respostas

M

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

L

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:

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;

	}

}
M

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 );
L

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!!!

Criado 16 de maio de 2005
Ultima resposta 16 de mai. de 2005
Respostas 4
Participantes 2