Frage von milkyway2, 83

Weiß jemand was dieser Code übersetzt bedeutet: for (int i=0; i< val.length; i++)?

Das es um eine Schleife und einen Array geht, weiß ich, ich tu mir nur mit dem Übersetzen schwer. Wenn mir jemand bei diesem Ausdruck helfen könnte, würde mir das schon sehr viel weiterhelfen.

int[] val ={0,1,2,3}; 

int sum=0; 

for (int i=0; i< val.length; i++)

sum += val[i];

S.o.p:

Antwort
von androhecker, 36

Ist nicht so schwer.

int[] val ={0,1,2,3};

Das erstellt einfach nur ein Array mit 4 Zahlen.

int sum=0;

Und das eine Variable zum Speichern der Summe.

for (int i=0; i< val.length; i++)

Das muss man nun trennen, ein for Loop beinhaltet immer 3 Statements.
Das Erste erstellt eine Variable um die Position im Array zu speichern.
Das Zweite prüft vor jedem ausführen, ob die Position niedriger ist, als die Größe des Arrays. Wenn das Ergebnis false ist, stoppt das Loop.
Das Dritte erhöht den Zähler nach jedem ausführen um eins.


sum += val[i];

Hier wird nun die Summe um den Wert der jetzigen Position im Array erhöht.

Dieses Bild hilft sehr beim verstehen von for Loops:

https://www.tutorialspoint.com/java/images/java\_for\_loop.jpg

Kommentar von androhecker ,

Vielen Dank für das Kompliment.

Antwort
von Mikkey, 28

Der Ausdruck in der Überschrift deklariert eine Variable i, setzt die auf 0 und führt die folgende Anweisung so oft durch, bis die Variable i, die bei jedem Durchlauf um eins erhöht wird (i++) so oft durch, bis die Bedingung i<val.length nicht mehr erfüllt ist.

Insgesamt addiert der Code die Werte aus val in der Variablen sum auf.

Antwort
von Crysali, 26

Die Schleife läuft durch alle Werte, die in der Array Variable val gespeichert sind und fügt diese zu sum hinzu

int[] val = {0,1,2,3} ist hierbei ein Array, in dem die vier Werte gespeichert werden. So sollte int[0] = 0 sein, int[1] = 1 und so weiter, bis int[3] = 3.

Die Schleufe for( int i=0; i<val-length;i++) sollte nun eigentlich alle Werte aus dem Array zu einer Summe hinzufügen ( val.length gibt dir die maximale Größe des Array, also hier 3), das passiert in sum += val[w]. Wo allerdings das w herkommen soll, keine Ahnung, da müsste eigentlich i stehen, also
sum += val[i].

Kommentar von milkyway2 ,

Stimmt, anstatt w kommt ein i hin. Da habe ich mich vertippt. Dankeschön! :)

Kommentar von Crysali ,

Bitte :) Könnte auch sein, dass du i<= val.length statt i< val.length verwenden musst, je nachdem, wie deine Konsole mit Array umgeht.

Kommentar von androhecker ,

Das führt zu einer ArrayIndexOutOfBoundsException, denn der höchste Index ist immer um 1 niedriger, als die Größe des Arrays.

Kommentar von Crysali ,

Ah, das erklärt einiges in Unity, danke!

Antwort
von AndreCraft, 20

Die for schleife bedeutet, dass eine Variable i auf 0 gesetzt wird. Dann wird der Inhalt solange ausgeführt, wie i kleiner als die Länge des Arrays val ist. Nach jedem Durchgang der schleife wird i mit 1 addiert

Antwort
von CrEdo85wiederDa, 26

Eigentlich ganz einfach:
Die for-Schleife wiederholt sich so oft, bis jedes Element des Arrays abgearbeitet ist (Länge des Arrays = Anzahl der Elemente im Array)

Innerhalb der Schleife:
Das jeweilige Element wird zur Summe der vorherigen Elementen addiert.

Fertig :)

Expertenantwort
von TeeTier, Community-Experte für programmieren, 4

Der Code macht das gleiche wie ...

#include <iterator> // begin, end
#include <numeric> // accumulate

// ...

int arr[] = {1, 2, 3, 4};
int sum = accumulate(begin(arr), end(arr), 0);

... das sieht auf den ersten Blick vielleicht verwirrender aus, allerdings haben die Funktionsnamen sprechende Namen und sind deshalb evtl. leichter verständlich.

Es werden also einfach nur alle Zahlen im Array von Anfang (begin) bis Ende (end) summiert (accumulate), wobei die Summe mit Null initialisiert wird.

Ansonsten verweise ich auf die Antworten der anderen, in denen die Details schon gut genug erklärt wurden. Ich wollte nur nochmal auf den Ansatz mit den sprechenden Funktionen der STL hinweisen.

Viel Erfolg noch beim Lernen! :)

Antwort
von Sheeshboi3000, 17

int[] val ={0,1,2,3}; // Integerarray wird initialisiert

int sum=0; // das selbe mit nur einem Integer und keinem Array

(ich geh mal davon aus, dass die geschwungenen Klammern fehlen):

for (int i=0; i< val.length; i++) // Eine Schleife die solange läuft, bis das Integer i min. genau so groß ist wie das deklarierte Array/ pro Durchgang wird i um 1 erhöht

sum += val[w];  //pro Durchgang wird 'sum' um den Integerwert des Arrays val[] bei dem Index w erhöht( sum = sum+ val[w]*(val.length()-1))

Gruß

Keine passende Antwort gefunden?

Fragen Sie die Community