2017-10-10 6 views
-1

J'ai récemment commencé à programmer Java et j'ai un problème qui me donne envie de casser des choses. Ça commence à devenir agaçant, et je me sens assez stupide en ce moment.Comment calculer la moyenne de l'entrée de tableau?

La tâche est d'écrire un programme qui demande cinq numéros à être entrée dans un tableau (oui, ne peut pas utiliser une liste) et pour calculer ensuite la moyenne de l'entrée de cinq chiffres.

Où est-ce que je me trompe?

Mon code actuel calcule la moyenne après chaque entrée. Je veux faire cela après qu'ils ont tous été insérés, sinon quel est le point?

Toute aide est grandement appréciée, vous me croyez!

Voici le code:

import java.util.Scanner; 

public class Uppg3 { 
public static void main(String[] args) { 

    Scanner input = new Scanner(System.in); 
    int[] numbers = new int[5]; 

    int sum = 0; 
    for (int i = 0; i < numbers.length; i++) 
    { 
     System.out.println("enter a number: "); 
     numbers[i] = input.nextInt(); 
     sum = numbers[i]; 

    } 

    double average = sum/5; 

    System.out.println("Average is " + average); 
    input.close(); 
} 
} 
+1

'somme des nombres = [i]; somme' => '+ = nombre [i],' Vous devez également prendre soin avec 'deux moyenne = somme/5; 'puisque vous divisez deux entiers. – pzaenger

+0

Et au cas où vous vous demandez la somme + = nombre [i] est égal à sum = somme + nombre [i]; – JKostikiadis

+0

Gardez à l'esprit que lorsque vous divisez deux entiers (voir somme et 5), le résultat n'aura pas de décimales –

Répondre

0

Vous devez résumer une telle chose dans une méthode.

Vous pouvez traiter tous les numéros à la fois en les stockant dans un tableau et les transmettre en même temps ou de conserver un décompte en cours d'exécution et le retourner sur demande.

public class StatisticsUtils { 
    private double sum; 
    private int numValues; 

    public StatisticsUtils() { 
     this.sum = 0.0; 
     this.numValues = 0; 
    } 

    public void addValue(double value) {  
     this.sum += value; 
     ++this.numValues; 
    } 

    public double getAverage() { 
     double average = 0.0; 
     if (this.numValues > 0) { 
      average = this.sum/this.numValues; 
     } 
     return average; 
    } 

    public static double getAverage(double [] values) { 
     double average = 0.0; 
     if ((values != null) && (values.length > 0)) { 
      for (double value : values) { 
       average += value; 
      } 
      average /= values.length;  
     } 
     return average; 
    } 
} 
0

En regardant cette boucle

for (int i = 0; i < numbers.length; i++) 
{ 
    System.out.println("enter a number: "); 
    numbers[i] = input.nextInt(); 
    sum = numbers[i]; 

} 

Vous ajoutez au tableau très bien, mais vous conserver le réglage de la somme à ce qu'ils entrent. Par exemple, si j'entre 5 3 2, le tableau aura 5 3 2, mais la somme sera fixée à 2. Si je ne saisis que 5 3, il sera mis à 3.

Une solution serait utiliser + =, de cette façon, il ajoute ce nombre à n'importe quelle valeur actuelle (que vous commencez à 0). Il est également important de noter que lorsque vous divisez deux nombres entiers (somme et 5), cela ne vous donnera pas de nombre décimal. Cela peut être résolu en utilisant 5.0 ou en ajoutant une somme à un double.

0

Votre code est actuellement juste d'attribuer une valeur différente de sum à chaque itération de la boucle. Vous devez changer sum = numbers[i];-sum += numbers[i]; (équivalent à sum = sum + numbers[i];). Vous aurez également besoin de changer int sum = 0; à double sum = 0 de sorte que votre réponse a des décimales.

0

Ok, ça marche avec le "+ =", je t'aime Chris Phelps. Cela et le changement:

int sum = 0; 

à

double sum = 0; 

Pour la réponse ont une décimale. Merci beaucoup les gars! Un poids a été levé de ma poitrine :).

0

Code pour moyenne calcul d'entrée de gamme

package com.imedxs; 

import java.util.Scanner; 

public class Test { 

public static void main(String args[]) 
{ 
    Scanner sc=new Scanner(System.in); 

    System.out.println("for calculating average of array"); 
    int n=0; 
    int b=sc.nextInt(); 
    int[] numbers = new int[b]; 

    int sum = 0; 
    for (int i = 0; i < b; i++) 
    { 
     System.out.println("enter a number: "); 
     numbers[i] = sc.nextInt(); 
     sum += numbers[i]; 
     n++; 

    } 

    double average = sum/n; 

    System.out.println("Average is " + average); 

    } 
}