J'ai des devoirs et je me demandais si quelqu'un pourrait m'aider, car je suis nouveau sur Java et que je suis en train de programmer et que je suis bloqué sur une question. La question est:
La première méthode trouve la moyenne des éléments d'un tableau entier:
public double average(int[] data)
C'est-à-dire que, étant donné un tableau entier, data, calcule la moyenne de ses éléments et renvoie la valeur moyenne. Par exemple, la moyenne de {1, 3, 2, 5, 8} est de 3,8.
Voici ce que j'ai fait jusqu'à présent:
public double average(int[] data) {
int sum = 0;
while(int i=0; i < data.length; i++)
sum = sum + data[i];
double average = sum / data.length;;
System.out.println("Average value of array element is " " + average);
}
Lors de la compilation, un message d'erreur s'affiche dans la partie int i=0
et indique '.class attendue'. Toute aide serait appréciée.
Utiliser un amélioré pour serait encore plus agréable:
int sum = 0;
for (int d : data) sum += d;
Une autre chose qui va probablement vous donner une grosse surprise est le mauvais résultat que vous obtiendrez de
double average = sum / data.length;
Raison: sur le côté droit, vous avez une division entière et Java ne la favorisera pas automatiquement en division à virgule flottante. Il va calculer le quotient entier de sum/data.length
et ensuite seulement promouvoir cet entier en un double
. Une solution serait
double average = 1.0d * sum / data.length;
Cela forcera le dividende dans une double
, qui se propagera automatiquement au diviseur.
-while(int i=0; i < data.length; i++)
+for(int i=0; i < data.length; i++)
L'API de streaming Java 8 offre une alternative élégante:
public static void main(String[] args) {
double avg = Arrays.stream(new int[]{1,3,2,5,8}).average().getAsDouble();
System.out.println("avg: " + avg);
}
Le meilleur moyen de trouver la moyenne de certains nombres est d’essayer Classes ......
public static void main(String[] args) {
average(1,2,5,4);
}
public static void average(int...numbers){
int total = 0;
for(int x: numbers){
total+=x;
}
System.out.println("Average is: "+(double)total/numbers.length);
}
Eh bien, pour calculer la moyenne d'un tableau, vous pouvez envisager d'utiliser la boucle for
au lieu de la boucle while.
Donc, selon votre question, supposons un tableau comme étant arrNumbers
(ici, je considère les mêmes éléments de tableau que dans votre question)
int arrNumbers[] = new int[]{1, 3, 2, 5, 8};
int sum = 0;
for(int a = 0; a < arrNumbers.length; a++)
{
sum = sum + arrNumbers[a];
}
double average = sum / arrNumbers.length;
System.out.println("Average is: " + average);
Vous pouvez également utiliser la classe scanner
. Il vous reste.
Essayez de cette façon
public void average(int[] data) {
int sum = 0;
double average;
for(int i=0; i < data.length; i++){
sum = sum + data[i];
}
average = (double)sum/data.length;
System.out.println("Average value of array element is " + average);
}
si vous devez renvoyer une valeur moyenne, vous devez utiliser double clé Word au lieu de void clé Word et vous devez renvoyer une valeur retour moyenne .
public double average(int[] data) {
int sum = 0;
double average;
for(int i=0; i < data.length; i++){
sum = sum + data[i];
}
average = (double)sum/data.length;
return average;
}