Hallo zusammen, ich lerne grade Java und komme leider bei einem Problem nicht weiter.
Ich habe folgenden Code:
public class Array_mit_einem_Schleifendurchlauf_initialisieren {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array09 = new int[100];
for (int i=0; i<100; i++)
array09 = i;
System.out.println(array09);
}
}
Mein Ziel war es, dass nun jede Zahl die i annimmt, also 0-100, in der Konsole ausgegeben wird.
Leider wird mir in der Zeile mit dem Befehl System.out.printlln(array09); ein Fehler angezeigt.
Der angezeigte Fehler ist: i cannot be resolved to a variable
@White_Fox vielen Dank für die Hilfe, ich bin davon ausgegangen, dass ich keine geschweifte Klammer brauche, weil die Variable i und die for-Schleife ja immer noch im selben (großen) Block sind und i daher sichtbar sein sollte. Ich dachte, dass ich Werte im Array aktuell alle noch den Wert 0 haben, weil ich ja noch keine zugewiesen habe. Und danke für den Hinweis, werde demnächst Codetags benutzen.
In Java sind einige Formalismen zu beachten, z.B. Klammersetzung oder Benutzung von Arrays. Der folgende Erweiterung im Code könnte zieldienlicher sein:
ich bin davon ausgegangen, dass ich keine geschweifte Klammer brauche, weil die Variable i und die for-Schleife ja immer noch im selben (großen) Block sind und i daher sichtbar sein sollte. Ich dachte, dass ich Werte im Array aktuell alle noch den Wert 0 haben, weil ich ja noch keine zugewiesen habe.
Würde nur eine Anweisung in der Schleife stehen sollen, dann bräuchtest du keine geschweiften Klammern. Und ja, da es sich um ein Array eines primitiven Typs handelt, sind alle Werte mit dem Wert 0 initialisiert. Wäre es ein Array von Referenztypen, dann wären alle Werte null (Nullreferenz).
Die Variable "i" ist allerdings nur im Scope der Schleife deklariert, so dass sie für die println() Anweisung nicht mehr sichtbar ist. Der Code würde also nicht Compilieren.
Java:
for(int i =0; i <100; i++)
array09[i]= i;// Diese Anweisung ist innerhalb der Schleife, der Scope von "i" endet hierSystem.out.println(array09[i]);// Diese Anweisung ist außerhalb der Schleife. "i" ist hier unbekannt.// das vorstehende Code ist identisch zufor(int i =0; i <100; i++){
array09[i]= i;}System.out.println(array09[i]);
Generell sollte man allerdings immer mit geschweiften Klammern arbeiten, um solche Fehler zu vermeiden.
Das im Code des ersten Beitrags das [i]fehlt, liegt daran, dass es als BB-Code für kursive Schrift interpretiert wird. Man erkennt es daran, dass der folgende Text kursiv geschrieben ist. Abhilfe schaffen hier die Code-Tags.