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.
publicclassExercicio4{doublemedia(double[]a){doublemedia=0;if(a.length<2){System.out.println("O array deve possuir pelo menos 2 elementos.");}doublemediaFinal=0;for(doublei=0;i<=a.length;i++){doubleguardaSomador=0;doublesomador=a[i]+a[i++];guardaSomador+=somador;mediaFinal=guardaSomador/a.length;}returnmediaFinal;}
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?
Estranhamente consegui.
é só declarar o “i” dentro do for, como int, agora, por que?
ViniGodoy
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.
Vou colocar seu código abaixo e comentar linha-a-linha alguns dos enganos:
publicclassExercicio4{doublemedia(double[]a){doublemedia=0;//Essa variável não foi usada para nadaif(a.length<2){System.out.println("Oarraydevepossuirpelomenos2elementos.");}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(doublei=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 loopdoubleguardaSomador=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.doublesomador=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;}returnmediaFinal;}
Seu problema no exercício não foi só programação, foi com a matemática básica. Procure revisa-la.