Variable might not have been initialized error?

Pushhelp  - (programmieren, Java)

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.

Woher ich das weiß:Berufserfahrung – Software-Entwickler

Zizimiri 
Beitragsersteller
 12.12.2017, 20:18

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!! 

0
PWolff  12.12.2017, 22:17
@Zizimiri

Wo und wann wird array definiert?

Warum ist array kein Argument der Funktion?

0