# Berechnung Durchschnitt mit Schleife



## whiteTiger (15. Okt 2012)

Hallo zusammen

Ich beschäftige mich erst kurze Zeit mit der Java-Programmierung und möchte gerne folgende Aufgabe lösen:

Schreiben Sie ein Programm, welches den Durchschnitt von einer gewissen Anzahl Zahlen berechnet. Dazu soll das Programm zuerst danach fragen, wie viele Zahlen eingegeben werden sollen (Tipp: Integer-Variable) und diese dann als Double-Werte (Tipp: mithilfe einer Schleife) einlesen. Danach soll das Programm den Durchschnitt all dieser Double-Werte ausgeben. Das Programm soll sich in der Konsole wie folgt präsentieren:

Anzahl Zahlen = 5
1. Zahl = 3.5
2. Zahl = 2.9
3. Zahl = -5.1
4. Zahl = 9
5. Zahl = 17.23
Der Durchschnitt ist 5.506.

Kann mir jemand einen Tipp geben?

Vielen Dank im Voraus.


----------



## Firephoenix (15. Okt 2012)

Finde heraus wie du eine Zahl von der Konsole einlesen kannst (ganzzahl), nehm die ganzzahl für eine Schleife um die Durchläufe zu zählen.
In jedem Durchgang ließt du einen double-Wert von der Konsole ein und addierst ihn zu einer Gesamtsumme.
Am Ende die Summe durch die Anzahl der Zahlen (erster Wert) teilen und Ausgeben.

Gruß


----------



## MrClave (15. Okt 2012)

Dieser Part würde mich auch mal interessieren!
Das habe ich noch nie hinbekommen.


```
1. Zahl = 3.5
2. Zahl = 2.9
3. Zahl = -5.1
4. Zahl = 9
5. Zahl = 17.23
```

Das man 'nen Counter braucht ist klar, allerdings wüsste ich gerade nicht, wie man dies dann zwischen 
	
	
	
	





```
Anzahl Zahlen =
```
 und 
	
	
	
	





```
Der Durchschnitt ist
```
 packt.

Wenn du auf die Lösung gekommen bist, bitte posten


----------



## flopalko (15. Okt 2012)

MrClave hat gesagt.:


> Dieser Part würde mich auch mal interessieren!
> Das habe ich noch nie hinbekommen.
> 
> 
> ...



Wo ist da bitte das Problem?

```
int count = 5; //ich erspare mir hier das einlesen über die Konsole im einfachen BSP!
		for(int i = 1; i<count+1; i++){
			System.out.println(i + ". Zahl = "); //musst halt dann noch dein double mitgeben, das du auch immer einlesen musst und für Berechnungen verwenden musst, is nur ein Grundgerüst hier ;)
		}
```


----------



## whiteTiger (15. Okt 2012)

Ich schnalle es nicht. Ich muss nach den Ferien mal meinen Lehrer fragen.

Aber trotzdem vielen Dank für eure Hilfe.


----------



## MrClave (15. Okt 2012)

flopalko hat gesagt.:


> Wo ist da bitte das Problem?
> 
> ```
> int count = 5; //ich erspare mir hier das einlesen über die Konsole im einfachen BSP!
> ...



Das Problem ist, wenn man meinen Post nicht liest oder versteht.

Es soll so aussehen:



> Anzahl Zahlen = 5
> 1. Zahl = 3.5
> 2. Zahl = 2.9
> 3. Zahl = -5.1
> ...



Aber da eine Zahl innerhalb einer Schleife, nur in dieser erreichbar ist, kann man (bzw. ich) den Durchschnitt nicht ganz am Ende ausgeben...

Auf deine Art würde das ganze in der Konsole so aussehen:


```
Bitte geben sie die Anzahl der Zahlen ein:
5
3
1. Zahl = 3.0
5
2. Zahl = 5.0
6
3. Zahl = 6.0
4
4. Zahl = 4.0
5
5. Zahl = 5.0
Durchschnitt: 4.6
```

Du scheinst die Aufgabe nicht richtig verstanden zu haben.
Ich bin selbst erst Anfänger, daher sind meine Fähigkeiten sehr begrenzt. Und 0-8-15 Lösungen kann jeder hinbekommen.


----------



## flopalko (15. Okt 2012)

MrClave hat gesagt.:


> Das Problem ist, wenn man meinen Post nicht liest oder versteht.
> 
> Es soll so aussehen:
> 
> ...



Ok, sry dann hab ich das falsch verstanden...
Dann musst du halt einfach bei der Aufforderung die Zahl einzugeben kein println sondern ein print machen, also so:

```
//mein Scanner hier heißt in
		System.out.println("Geben Sie die Anzahl der einzugebenden Werte ein!");
		int count = in.nextInt();
		double temp = 0;
		double sum = 0;
		for(int i = 1; i<count+1; i++){
			System.out.print(i + ". Zahl = ");
			temp = in.nextDouble();
			sum += temp;
		}
		System.out.println("Durchschnitt = " + sum/count);
```


----------



## Firephoenix (15. Okt 2012)

Das wäre dann auch eine mögliche Lösung (vorsicht für den Fall count=0 - teilen durch 0 ist nicht erlaubt).
a<b+1 könnte man evtl noch umformen zu a<=b 
Gruß


----------



## flopalko (15. Okt 2012)

Ja ich hab jz nicht für jeden blöden Input bei einem Bsp Fehler abgefangen...war keine perfekte Lösung sondern nur schnell hingerotzt^^
Zu dem a<b+1 eher schreiben a<=b geb ich dir in diesem Fall recht, wäre schöner, nur bin ich der Meinung, dass man entweder konsequent < oder <= verwenden sollte, und ansonsten hättest du halt bei einer normalen Schleife die bei 0 beginnt und bis n-1 laufen soll halt das mit dem +1


----------



## Spewer (16. Okt 2012)

So gehts auch mit ner einfachen if Abfrage

```
import java.util.Scanner;

public class Test
{
    public static void main(String[] args)
    {
	Scanner in = new Scanner(System.in);
	
	System.out.println("Geben Sie die Anzahl der einzugebenden Werte ein!");
	int count = in.nextInt();
	if (count == 0)
	{
	    System.out.println("Man kann keinen Durchschnitt aus 0-Zahlen berechnen.");
	}
	else
	{
	    double temp = 0;
	    double sum = 0;
	    for (int i = 1; i < count + 1; i++)
	    {
		System.out.print(i + ". Zahl = ");
		temp = in.nextDouble();
		sum += temp;
	    }
	    System.out.println("Durchschnitt = " + sum / count);
	}
    }
}
```


----------

