web-dev-qa-db-fra.com

Comment manipuler des tableaux. Trouvez la moyenne. Débutant Java

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. 

7
user1605782

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.

14
Marko Topolnik
-while(int i=0; i < data.length; i++) 
+for(int i=0; i < data.length; i++) 
7
CyberDem0n

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);
}
5
skubski

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);

}
0
Kastriot Rexhepi

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.

0
Lohith

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;    
}
0
mssb