Meu objetivo é criar um método que recebe um array de double e retorne sua média, mas não consigo percorrer o array! segue o código.
[code]
public class Exercicio4 {
double media(double[] a) {
double media = 0;
if (a.length < 2) {
System.out.println(“O array deve possuir pelo menos 2 elementos.”);
}
tá dizendo q o erro tá na parte "somador = a[i] + a[i++], dizendo que é incompatível e que poderá haver perda de precisão na conversão de double pra int, MAS NAO TEM NENHUM INT! a não ser o i, mas o i é só para a posição!
como eu faço?
Seu código está muito equivocado. A média é simplesmente a soma de todos os elementos, dividido pelo total de elementos. A média de um conjunto vazio é 0.
O método para calculo da média, é, portanto:
[code]public class Exercicio4 {
double media(double[] a) {
if (a.length == 0) {
return 0;
}
//Soma o valor de todos os elementos
double soma = 0;
for (int i = 0; i < a.length; i++) {
soma += a[i];
}
//Calcula a média e retorna
return soma / a.length;
}
}[/code]
Vou colocar seu código abaixo e comentar linha-a-linha alguns dos enganos:
[code]public class Exercicio4 {
double media(double[] a) {
double media = 0; //Essa variável não foi usada para nada
if (a.length < 2) {
System.out.println("O array deve possuir pelo menos 2 elementos.");
}
doublemediaFinal = 0;
//A variável i será usada para o índice do array a[i], portanto, deve ser int, e não double.
//Além disso, o último índice de um array é a[length]. Por isso, o for não deve usar <=, só <
for (double i = 0 ; i <= a.length ; i++) {
//Variáveis declaradas dentro do for só duram até o fim do for.
//A variável guardaSomador será zerada a cada loop
double guardaSomador = 0;
//Esse código está somando a[i] com a[i]. O ++ só soma 1 ao i após o comando
//Agora, mesmo que você corrigisse para i+1, aqui você estaria somando cada par de números
//a[0] com a[1]. No segundo passo do for a[1] com a[2], no terceiro a[2] com a[3].
//Perceba que cada número é somado 2 vezes na conta, e não uma.
double somador = a[i] + a[i++];
guardaSomador += somador;
//A média só precisa ser divida uma vez, não a cada número somado.
mediaFinal = guardaSomador / a.length;
}
return mediaFinal;
} [/code]
Seu problema no exercício não foi só programação, foi com a matemática básica. Procure revisa-la.