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

7 Antworten

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].

milkyway2 
Fragesteller
 27.09.2016, 21:42

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

0
Crysali  27.09.2016, 21:43
@milkyway2

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

0
androhecker  27.09.2016, 21:50
@Crysali

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

1

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

androhecker  27.09.2016, 21:47

Vielen Dank für das Kompliment.

0
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! :)

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 :)

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