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