# Arrays einzelnd subtrahieren..



## Gyng (22. Dez 2015)

Hallo Community,

ich bin schon ein wenig am verzweifeln weil ich einfach nicht weiterkomme. Ich bearbeite eine Übungsaufgabe die folgendermaßen beginnt :


```
"Eine Wetterbeobachtungsstation hat über zehn Jahre hinweg die jährlichen Niederschlagsmengen gemessen und in einem Feld notiert: 
double[] niederschlag = {69.1, 50.1, 67.0, 63.0, 76.5,  54.1, 86.6, 55.9, 75.7, 57.2}; 
Schreiben Sie ein Java-Programm, das die durchschnittliche jährliche Niederschlagsmenge berechnet und ausgibt. Außerdem soll eine Tabelle ausgegeben werden, die für jedes Jahr die Niederschlagsmenge und die jeweilige Abweichung vom Mittelwert enthält."
```

Soweit so gut.. mein Code sieht bisher wie folgt aus :


```
double[] niederschlag = { 69.1, 50.1, 67.0, 63.0, 76.5, 54.1, 86.6, 55.9,     75.7, 57.2 };
     double durchschnitt = 0;
     double abweichung = 0;

     for (int i = 0; i < niederschlag.length; i++) {
       durchschnitt += niederschlag[i];
     }
    

     durchschnitt /= niederschlag.length;
     durchschnitt = Math.round(100.0 * durchschnitt) / 100.0;
     abweichung = Math.round(100.0 * abweichung) / 100.0;

     System.out.println("durchschnittliche Niederschlagsmenge : " + durchschnitt);
     System.out.println("");
     System.out.println("Jahr" + "  " + "Niederschlag" + "  " + "Abweichung");
     System.out.println("  1" + "  " + niederschlag[0] + "  " + abweichung);
```

Jetzt suche ich nach einer Möglichkeit wie ich jedes einzelne Array von meinem Attribut "abweichung" subtrahieren kann und dann ausgeben kann. Ich hoffe man versteht was ich meine.(sodass ich dann die abweichung zum durchschnitt habe)

Gruß Andreas


----------



## strußi (23. Dez 2015)

du kannst für die for-schleife die for-each-schleife nehmen
for( double d :niederschlag){
  //logik
}
dann einfach für die ausgabe noch mal in einer schleife die rechnungen machen


----------



## Gyng (23. Dez 2015)

Danke Strußi !
Konnte die Aufgabe nun lösen, allerdings nicht exakt so wie du sie vorgeschlagen hast. Ich habe nämlich die for schleife nicht ersetzt sondern eine for-each-Schleife hinzugefügt. Der Code tut nun das was er tun soll und zwar eine Tabelle ausgeben. Die Tabelle die hier ausgegeben wird sieht nun exakt so aus wie die aus der Übungsaufgabe.

Hier nochmal der Code :


```
public class Wetterstation {

    public static void main(String[] args) {
        double[] niederschlag = { 69.1, 50.1, 67.0, 63.0, 76.5, 54.1, 86.6, 55.9, 75.7, 57.2 };
        double durchschnitt = 0;
        double abweichung = 0; // <-- hier weitermachen
        int jahr = 1;

        for (int i = 0; i < niederschlag.length; i++) {
            durchschnitt += niederschlag[i];
        }

        durchschnitt /= niederschlag.length;
        durchschnitt = Math.round(100.0 * durchschnitt) / 100.0;
        System.out.println("durchschnittliche Niederschlagsmenge : " + durchschnitt);
        System.out.println("");
        System.out.println("Jahr" + "     " + "Niederschlag" + "     " + "Abweichung");

        for (double d : niederschlag) {

            abweichung = durchschnitt - d;
            if (abweichung > 0) {
                abweichung = Math.round(100.0 * abweichung) / 100.0; //2 Nachkommastellen
                System.out.println(jahr + "          " + d + "            " + abweichung + " unter dem durchschitt");
            } else {
                abweichung *= (-1);
                abweichung = Math.round(100.0 * abweichung) / 100.0; //2 Nachkommastellen
                System.out.println(jahr + "          " + d + "            " + abweichung + " über dem durchschitt");
            }
            jahr++;
        }

    }

}
```

_Falls noch jemand einen Vorschlag hat wie ich den Code effizienter oder "schöner" machen kann bin ich gerne bereit diesen anzunehmen. 

Gruß Andreas_


----------



## strußi (23. Dez 2015)

eine schönere ausgabe kannst du mittels formatierter ausgabe erreichen, sieht im Code auch besser aus, als viele leerzeichen
http://openbook.rheinwerk-verlag.de...tml#dodtp502391df-4eac-4eb6-a246-312c07a323f4


----------

