Kann mir jemand dabei helfen?

3 Antworten

Von Experte jeanyfan bestätigt
Also ich meine was mit dem Zähler gemeint ist.

Das ist die Schleifenvariable, die auch nur in dieser Schleife gültig ist. Dieser wird am Ende jeder Iteration um eins erhöht, bis sie eben größer gleich 5 ist. Die Schleife wird also 5 mal aufgerufen

Und wofür brauch man asdf[zaehler] also ich weiß das man da irgendwie auf den Zähler zugreift aber wofür nimmt man dann noch das Array?

Du greifst nicht auf den Zähler zu, du greifst auf das Array asdf zu - und zwar auf das Feld mit dem Index zaehler.

asdf hat insgesamt 10 Felder mit den Indizes 0 bis 9. Da nichts sonst angegeben ist, werden diese alle erstmal eine 0 speichern.

Mit deiner Schleife gehst du nun über die ersten 5 Felder des Arrays und erhöhst den gespeicherten Wert im Array um zaehler + 5 ...

Dein Array wird am Ende also so aussehen:

[5, 6, 7, 8, 9, 0, 0, 0, 0, 0]
Geht das nicht auch einfach so?
for (int zaehler = 0; zahler < 5; zaehler++) {
zaehler = zaehler + 5; }

Nein, das macht etwas KOMPLETT anderes ... Was du machst:

  1. Schleifenkopf: zaehler = 0
  2. Da zaehler < 5, betrete Schleife
  3. zaehler += 5 //
  4. Schleifenkopf: zaehler = 5
  5. da zaehler nun >= 5, wird Schleife nicht betreten. zaehler als Variable wird nun gelöscht, da es auch nur für die Schleife existiert (Stichwort Scopes)

Könnte ich mir theroetisch in einer Zeile außerhalb der geschweiften Klammern auch eine Variable mit dem Namen "zaehler" erstellen? Also z.B.:

int zaehler = 4; ?

0
@Mythxx103

Kannst du. Dann musst du in der For-Schleife den Kopf verändern, sonst meckert der Compiler - da eine Variable namens "zaehler" schon existiert

Du kannst zwei Dinge tun:

for (zaehler = 0; zaehler < 5; zaehler++)

Du entfernst das "int" vor zaehler und überschreibst einfach den momentan gespeicherten Wert in der existierenden Variable

for (; zaehler < 5; zaehler++)

Du lässt den ersten Teil einfach frei. Somit wird keine Schleifenvariable im Kopf erstellt und auch nichts festgelegt

1
@xxxcyberxxx

Also der Zähler beinhaltet 0,1,2,3,4 und das ist der Index? Aber man greift ja schon quasi darauf zu, wenn man immer bei jedem Schleifen durchlauf um +5 erhöht oder? Also weist man dem Array den wert vom Zähler zu, sodass dann 5,6,7,8,9,0,00,0,0. Also speichert man den Zähler quasi im Array?

0
@Mythxx103
Also der Zähler beinhaltet 0,1,2,3,4

In jetzt eben dieser Schleife wird der Zähler die Werte 0 bis 4 annehmen, weil das eben so programmiert wurde

und das ist der Inde x?

Wird in diesem Beispiel als Index für das Array benutzt - und auch als Zahl zum Addieren

Aber man greift ja schon quasi darauf zu wenn man immer bei jedem Schleifen durchlauf um +5 erhöht oder?

Nein, rein durch das Addieren um 5 greifst du noch nicht auf das Array zu. Das passiert durch asdf[zaehler]

Also weist man dem Array den wert vom Zähler zu so, dass dann 5,6,7,8,9,0,00,0,0. Also speichert man den Zähler quasi im Array?

In dem Fall hier wird der Zähler im Array an der entsprechenden Position gespeichert und immer um 5 erhöht

1

Du schreibst in dem Fall ja in die Felder von deinem Array die entsprechenden Zahlen rein und speicherst sie damit quasi, wie wenn du eine Tabelle ausfüllst.

In deinem Fall würdest du nur jedes Mal der Zählervariable einen neuen Wert zuweisen. Aber sobald du nen neuen Wert zuweist, löschst du damit den alten, weil eine Variable ja immer nur einen Wert haben kann.

Der asdf[zaehler] bestimmt die größe des Arrays. Sagst du zB Array[5] kannst du 6 Werte in dem Array speichern. Es sind genau 6 da der nullte wert 0 auch mitgezählt wird.

Woher ich das weiß:Berufserfahrung
Der asdf[zaehler] bestimmt die größe des Arrays. Sagst du zB Array[5] kannst du 6 Werte in dem Array speichern. Es sind genau 6 da der nullte wert 0 auch mitgezählt wird.

falsch ...

Die Größe des Integer-Arrays "asdf" wird durch diese Zeile festgelegt.

int[] asdf = new int[10];

es sind genau 10 Felder mit den Indizes 0 bis (inklusive) 9 - die 10 gehört nicht mehr dazu

Sagst du zB Array[5] kannst du 6 Werte in dem Array speichern. Es sind genau 6 da der nullte wert 0 auch mitgezählt wird.

Nein. Wenn du - in diesem Beispiel - z.B. asdf[5] nutzt, sagst du eben nicht, dass asdf 6 Felder haben soll (was auch eine falsche Behauptung ist) - du greifst auf das Feld mit dem Index 5 - was insgesamt das 6. Feld ist - zu.

Das einzig richtige an deiner Aussage ist, dass auch die 0 als erster Index gezählt wird ...

2
@xxxcyberxxx

Danke für deine Korrektur! :) Du hast Recht. Ich war vorhin ein wenig durcheinander.

2

Was möchtest Du wissen?