Array Mittelwert berechnen, wie?

  • Themenstarter Themenstarter Gelöschtes Mitglied 53953
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 53953

Gast
Möchte den Mittelwert von folgendem Array berechnen:

Code:
import java.util.*;

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

    System.out.println("Wie viele Temperaturwerte wollen Sie eingeben?");
    System.out.print("Ihre Eingabe: ");
   
    int anzahl = eingabe.nextInt();
    int[] tempWerte = new int[anzahl];
    System.out.println();  
    for (int x=0;x<tempWerte.length;x++) {
      System.out.print("Bitte geben Sie Temperaturwerte ein: ");
      tempWerte[x]=eingabe.nextInt();
    }
    System.out.println();
    int durchschnitt = tempWerte/anzahl;
    System.out.println(durchschnitt);
  } 
}

Doch so wie ich es unten versuche, bekomme ich einen Error.
Wie kann ich den Mittelwert der eingegebenen Werte berechnen?
 
Indem du die Summe aller Array-Werte berechnest, und es durch die Anzahl dividierst.
Java:
    int sum = 0;
    for (int x=0;x<tempWerte.length;x++) {
      System.out.print("Bitte geben Sie Temperaturwerte ein: ");
      tempWerte[x]=eingabe.nextInt();
      sum += tempWerte[x];
    }
    System.out.println();
    double durchschnitt = (double)(sum/tempWerte.length);
    System.out.println(durchschnitt);
 
Man kann auch laufenden Mittelwert errechnen während man die Elemente in ein Array oder ArrayList hinzufügt:
Java:
ArrayList<Integer> l=new ArrayList<Integer>();
double avg=0;
public void add(Integer i){
l.add(i);
avg+=(i-avg)/l.size();
}
Dieses Vorgehen hat einen Geschwindigkeitsvorteil, da man nicht jedesmal das ganze Array durchsuchen muss.
 
Test:
Java:
import java.util.*;

public class Main
{
   
    public void add(Integer i){
        l.add(i);
        avg+=(i-avg)/l.size();
    }
    ArrayList<Integer> l=new ArrayList<Integer>();
    double avg=0;
   
    public static void main(String[] args)
    {
       
        Main m=new Main();
       
        while(true){
            for(int i=0;i<1000000;i++){
            m.add(10);
            m.add(0);
            }
            System.out.println("avg:"+m.avg);
        }
       
    }
   
}
 
Weiterer interessanter Test:
Java:
package src;



import java.util.*;

public class Main
{
   
    public void add(Integer i){
        l.add(i);
        avg+=(i-avg)/l.size();
    }
    ArrayList<Integer> l=new ArrayList<Integer>();
    double avg=0;
   
    public static void main(String[] args)
    {
       
        Main m=new Main();
       
        while(true){
            for(int i=0;i<1000000;i++){
            m.add(new Random().nextInt(11));
            //m.add(0);
            }
            System.out.println("avg:"+m.avg);
        }
       
    }
   
}
 

Zurück
Oben