Werte der Elemente eines initialiserten Arrays addieren

Guten Tag,

ich versuche momentan mir einige Java Skills anzueignen. Dabei bin ich auf ein Problem gestossen, welches ich mir nicht erklären kann.

Mit der Methode setUp initialsiere ich das Array von 1 bis (a.length -1). Danach möchte ich jedem Element der gleiche Wert dazuaddieren. Mit der Methode add2 (normaler for-Schleife) funktioniert dies problemlos. Mit der Methode add (for-each-Schleife) kriege ich jedoch eine ArrayOutOfBoundsException. Wieso funktioniert es mit einer for-each-Schleife nicht? Im Spoiler könnt ihr das Ausgegebene sehen.

     */
    public void setUp()
    {
        for (int i = 0; i < a.length; i++) {
            a** = (i+1);
            System.out.println(a**);
        }
    } 

/**
     */
    public void add(int value)
    {
        for (int i : a) {
            a** += value;
            System.out.println(a**);
        }
    }
    
    /**
     */
    public void add2(int value)
    {
        for (int i = 0; i < a.length; i++) {
            a** += value;
            System.out.println(a**);
        }
    } ```

[SPOILER]Exercise4 exercise1 = new Exercise4(10);
exercise1.setUp();
1
2
3
4
5
6
7
8
9
10
exercise1.add(10);
12
    Exception occurred.
exercise1.setUp();
1
2
3
4
5
6
7
8
9
10
exercise1.add2(10);
11
12
13
14
15
16
17
18
19
20
[/SPOILER]

Vielen Dank und freundliche Grüsse

Unihoc7

Die For-each schleife iteriert über jedes Element nicht den Index. Das känntest du erkennen wenn du statt einem int[] ein String[] nehmen würdest.
Bei der For-each schleife wird der Variablen im Schleifenkopf bei jedem Durchlauf das nächste Element zugewiesen. Wenn in deinem Fall ein Wert des Arrays größer ist als das Array selber,
fliegt logischerweise eine AIOOBException.

Allgemein kann man sagen, dass dein vorhaben nicht mit einer For-each schleife funktioniert (bzw. nicht so simpel) da du hier auf ein Index zugreifen willst.