Zum Inhalt springen

Keine Array Modifizierung mit ForEach-Schleife

Willkommen Foren Programmier-Kurs Keine Array Modifizierung mit ForEach-Schleife

  • Dieses Thema ist leer.
Ansicht von 3 Beiträgen - 1 bis 3 (von insgesamt 3)
  • Autor
    Beiträge
  • #1196 Antworten
    Marvin
    Gast

    Hi,

    ich habe gerade das P6 Tutorial (2. Video) angeschaut und dann beim Reproduzieren (Aufgabe 6.2) gemerkt, dass man mit der ForEach-Schleife keine Werte in den Array schreiben kann.

    Mache ich hier etwas falsch oder geht das wirklich einfach nicht?

    Hier mein Code:


    // Erzeugen eines neuen Arrays mit Länge 10.
    int [] zufallsArray = new int[10];

    // Zufallszahl in jede Position des Arrays schreiben:
    for(int element : zufallsArray){
    element = (int) (100 * Math.random()) + 1;
    System.out.println(element); // Hier wird nur der jeweilige Wert für "element" ausgegeben, jedoch ist das keine Bestätigung für einen erfolgreich modifizierten Array-Wert.
    }

    //Ausgabe aller Werte des Arrays:
    for(int element : zufallsArray){
    System.out.println(element);
    } // Hier werden dann nur noch Nullen ausgegeben. Das lässt mich daraus schließen, dass die gewollte Modifizierung zuvor nicht erfolgreich war. Nutze ich zuvor die For-Schleife mit Zählvariable, werden hiermit die Zufallswerte ausgegeben.

    LG,
    Marvin

    #1197 Antworten
    Bolli
    Gast

    Hi Marvin,

    du hast hier nichts falsch gemacht, das ist eine Limitierung von Java als Programmiersprache. Hier kannst du keine einfachen (primitiven) Werte wie int, double, char, boolean in einer ForEach-Schleife modifizieren, sondern musst eine einfache For-Schleife verwenden.

    In anderen Programmiersprachen funktioniert das besser, z.B. mit Pointern oder Enumerate.

    Viele Grüße
    Bolli

    #1199 Antworten
    Dominik
    Gast

    Hi Marvin,

    ich führe nochmal ein bisschen aus 🙂

    Es gibt in Java grundsätzlich zwei Wege, über alle Elemente in einem Array zu iterieren.

    Definieren wir unsmal ein Array:


    int[] myArray = {1, 1, 2, 3, 5, 8, 13, 21, 34};

    Wenn du auf das Array selbst nicht zugreifen musst, sondern dich nur die Elemente interessieren, dann kannst du die sog. for-each-Schleife benutzen.
    Du kannst dann allerdings nur auf die Elemente selbst zugreifen, erhältst aber keine Zählvariable. Das ganze sieht dann so aus:


    for (int number : myArray) {
    System.out.println(number);
    // ich kann hier nur auf 'number' zugreifen, weiß aber nicht, an welchem Index diese Zahl steht.
    }

    Ausgabe:


    1
    1
    2
    3
    5
    8
    13
    21
    34

    Wenn du das Array ändern willst, musst du natürlich auf bestimmte Elemente de Arrays zugreifen können. Dafür brauchst du den Index.
    Da gibt es zwei Möglichkeiten:

    1.: Du definierst dir manuell eine Zählvariable:


    int counter = 0;
    for (int number : myArray) {
    System.out.println(counter + ": " + number);
    myArray[counter] = 0; // Zugriff auf das Array
    counter++;
    }

    2.: Du benutzt eine Schleife mit Zählvariante:


    for (int i = 0; i < array.length; i++) {
    System.out.println(counter + ": " + number);
    myArray[i] = 0; // Zugriff auf das Array
    }

    Üblicherweise benutzt man die zweite Variante, weil sie lesbarer ist.

    LG
    Dominik

Ansicht von 3 Beiträgen - 1 bis 3 (von insgesamt 3)
Antwort auf: Keine Array Modifizierung mit ForEach-Schleife
Deine Information:





<a href="" title="" rel="" target=""> <blockquote cite=""> <code> <pre class=""> <em> <strong> <del datetime="" cite=""> <ins datetime="" cite=""> <ul> <ol start=""> <li> <img src="" border="" alt="" height="" width="">