# Addition von Arrays



## El Kabong (12. Aug 2010)

Hallo zusammen!

Ich würde gerne die Werte die in meinen Feldern gespeichert sind addieren. Folgendes hab ich bisher zustande gebracht:


```
public class FelderAddition {

    int[] array1 = new int[3];
    int[] array2 = new int[3];
    int[] array3 = new int[3];

    public int addition() {
        int summe = 0;

        for (int i = 0; i < array1.length; ++i) {
            for (int j = 0; j < array2.length; j++) 
                for (int k = 0; k < array3.length; k++)
            
            summe += array1[i] + array2[j] + array3[k];

        }
        return summe;

    }
    }
```

Mein Problem ist das ich jetzt nicht weiß wo ich die Werte den Feldern zuweisen kann. Bisher hab ich rausgefunden das ich nur in der main Methode Werte meinen Feldern zuweisen kann, aber wenn ich eine neue Klasse anlege und dort die Felder mit Werten belegen will bekomme ich immer die Meldung "cannot find symbol". 

Danke für die Hilfe!


Gruß,
El Kabong


----------



## Gast2 (12. Aug 2010)

So zum Beispiel:

```
public class FelderAddition {

    private int[] array1 = new int[3];
    private int[] array2 = new int[3];
    private int[] array3 = new int[3];

    public FelderAddition() {
        array1[0] = 1;
        array1[1] = 2;
        array1[2] = 3;

        array2[0] = 4;
        array2[1] = 5;
        array2[2] = 6;

        array3[0] = 7;
        array3[1] = 8;
        array3[2] = 9;
    }

    public int addition() {
        int summe = 0;

        for (int i = 0; i < array1.length; i++) {
            summe += array1[i] + array2[i] + array3[i];
        }

        return summe;

    }
    
    public static void main(String[] args) {
        FelderAddition fa = new FelderAddition();
        System.out.println(fa.addition());
    }
}
```


----------



## El Kabong (12. Aug 2010)

Danke!

Aber wieso brauch ich nur eine for-Schleife? Ich bin davon ausgegangen das ich für jedes Feld eine einzelne Schleife gebraucht hätte.


----------



## heinzHerbert (12. Aug 2010)

Deine Variante (El Kabong) berechnet etwas anderes als die von EikeB: 

Mit einer Schleife wird jedes Element aus jedem Array genau einmal zur Summe addiert. Mit drei (ineinander geschachtelten) Schleifen wird jedes Element aus Array1 einmal, jedes Element aus Array 2 zweimal und jedes Element aus Array 3 dreimal zur Summe addiert (kurz gesagt, die Summe ist dann summe(array1)+2*summe(array2)+3*summe(array3) ).


----------



## Marco13 (12. Aug 2010)

Falls du es nicht "durch Draufschauen" nachvollziehen kannst, kannst du auch mal so eine Debug-Ausgabe machen wie

```
System.out.println("Addiere");
System.out.println("    array1["+i+"]="+array1[i]);
System.out.println("   +array2["+j+"]="+array2[k]);
System.out.println("   +array3["+k+"]="+array3[k]);
System.out.println("zur summe");
summe += array1[i] + array2[j] + array3[k];
```

Wie einfach das ganze mit Scala wäre :reflect:

Aber zumindest einen Schritt in diese Richtung: Man könnte sich eine hilfsmethode machen, die die Summe EINES Arrays berechnet

```
private static int sum(int array[])
{
    int result = 0;
    for (int a : array) result+=a;
    return result;
}
```
und die dann in der "addition"-Methode so benutzen

```
public int addition() 
{
    return sub(array1)+sum(array2)+sum(array3);
}
```
Wäre IMHO übersichtlicher.


EDIT: Und hat gegenüber EikeB's Variante den Vorteil, dass sie auch für Arrays mit unterschiedlichen Längen funktioniert.


----------

