Eu tô meio com sono, já, mas eu acho que n/total dá um double, e o retorno do seu método é int…
Vc diz que “não rolou”… o que “não rolou”, exatamente? Deu erro de compilação, erro de execução, o resultado tá errado… ?
Ironlynx
Esse método funciona perfeitamente(aconselho declarar como double para evitar o truncamento de casas decimais)
Seu problema deve estar na hora de passar valores p/o método.
Veja se vc não errou algo no main…
maxguzenski
mude o tipo de retorno pra double
e no retorno faz assim:
return (n/total)d ;
para passar as valores pra funcao é assim:
double resultado;
resultado = media (new int[]{1,2,3,4,5});
G
Guilherme
Vou publicar o codigo e voces me explicam o que estou fazendo de errado:
obs: comecei com Java final de semana passado, entao estou tentando passar algumas coisas que fazia naquelas linguagens de brincaderinha pra um troço de verdade
cv1
classMediaNumeros{// Tipo de retorno int não condiz com uma divisão.// As divisões retornam double. :)publicdoublemedia(int[]numeros){intn=0;for(inti=0;i<numeros.length;i++){n+=numeros[i];}return(n/numeros.length);}publicstaticvoidmain(String[]args){int[]nums={2,4,6};System.out.println(media(nums));}}
Isso já deve funcionar, se eu não estiver esquecendo nada…
G’d luck!
G
Guilherme
Bom, desse jeito também não funcionou, mas eu dei uma lida na mensagem de erro e acabei solucionando o problema, deveria ter postado a mensagem antes (erro meu):
legal, agora supondo que eu queira passar os parametros para o ‘main’ e lá ele fazer a média dos números? ainda não testei, mas tenho uma duvida, na maioria dos exemplos que vejo o ‘main’ tem uma lista de Strings como ‘arguments’ , sempre deve ser estritamente String? não pode ser integer?
cv1
Não, a assinatura do main é sempre recebendo um String[]. Voce vai ter que iterar sobre esse array e converter pra ints, o que não é tão difícil quanto parece, então eu vou deixar vc se virar um pouco
maxguzenski
putz, e todo mundo estudando pra certificação (inclusive eu)
e niguem percebeu o erro básico de main chamando metodos nao estaticos
pra chamar o metodo sem ser estaticos é so fazer isso no teu codigo main(…)
MediaNumeros myNum = new MediaNumeros (); System.out.println( myNum.media(array) );
G
Guilherme
Hehehe…
Agora me explica esse negócio de
Qualquerbla=newQualquer();
Eu teria até como criar um Qualquer[] ?
E pelo visto Java é simpático com dot syntax né? Então da pra fazer…
Classea=newClasse().método(param1,...,paramN);
?
maxguzenski
nao vai compilar pq a Classe a vai receber o retorno do métido (a menos que o metodo retorne uma “Classe”) e nao uma instancioa do metodo…
por exemplo, isso funciona: int a = new QualquerClasse().metodoRetornaInt(10);
obs.: nao entendi sua primeira perguta…
G
Guilherme
Se eu poderia té mesmo retornar um Array de ‘Qualquer’ tipo:
Qualquer[] bla = new Qualquer(length);
A respeito, teria como você me mandar um exemplo retornando a Classe?