Variable might not have been initialized error?
Hallo,
Meine Code ist aufm Bild! Die Ergebniss ist immer 0 und wenn ich index nicht initialisiere dann bekomme ich "Variable might not have been initialized". Ich stehe gerade aufm schlauch >.<
Danke im Voraus :)
LG

3 Antworten
Hast du deine Methode auch mit verschieden Arrays ausprobiert? So wie es dasteht, sollte immer etwas >0 ausgegeben werden, falls die ersten 2 Elemente des Arrays != 0 sind, ansonsten wird halt 0 ausgegeben, da du ja die Schleife nach der ersten 0 im Array sofort abbrichst.
Dass " Variable might not have been initialized " dransteht, falls du dein j nicht initialisiert, lässt sich außerdem einfach erklären.
Sagen wir, du hast dein j nicht initialisiert und dein erstes Element in array ist 0, also array[0] = 0.
Du gehst in deine Schleife rein und schaust, ob array[0] != 0 ist. Ist ja nicht der Fall -> geht in den else-Block rein und bricht die Schleife ab. Wir merken: j wurde bis jetzt immer noch angefasst.
Naja, jetzt musst du j returnen. Ohne Wert wird das schwierig.
Warum der fehler für j auftritt, hat HylianGamer in seiner Antwort ja schon angedeutet: Wenn Du j nicht initialisierst, dann kannst Du im "else - break"-Zweig landen, ohne dass vorher j "irgendwie" gesetzt wurde. Danach gibst Du "return(j)" einen nicht initialisierten Wert zurück ... nicht gut ;)
Was mir auffällt: Wer oder was ist "array". Da übergibst der Funktion kein "array" und deklarierst/initialisierst auch nichts innerhalb der Funktion. Deshalb habe ich ohnehin Zweifel, ob Deine "for"-Schleife überhaupt anspringt. Bei nicht initialisiertem j landest Du also gleich bei "return(j)" mit "Variable might not have been initialized" falls Du nicht j=0 setzt. Da meiner Meinung nach nie irgendetwas innerhalb der for-Schleife ausgeführt wird, erklärt das auch, warum Du immer 0 zurückbekommst.
Meine zwei Cent zu dem Codeschnipsel ;)
Meinst du mit "index" die Variable "j"?
Eine for-Schleife wird nicht notwendigerweise durchlaufen, außerdem steht die Zuweisung an j innerhalb der Schleife unter einer Bedingung.
Warum immer 0 herauskommt, kann nur am Array liegen.
-----
Übrigens verstehe ich nicht ganz, warum du j mit 0 und nicht mit -1 initialisierst. Die Funktion ist ansonsten ganz offensichtlich eine Analogie zur indexOf()-Methode, die -1 zurückgibt, wenn das Element nicht gefunden wird.
Genau die for schleife wird nicht durchlaufen das verstehe ich nicht wieso. Es ist egal ob j mit -1 oder irgendein int intializiert. Die for schleife geht einfach nicht!!