weiß jemand warum Java diesen Fehler ausspuckt? "Variable might not hav been initialized"

RememberdiAlamo

Aktives Mitglied
Ich seh lerider den Fehler nicht. Weiß heir jemand wieso java den Fehler meldet?
Ich habe es etwas umgeändert. Das Richtige, also das welches funktioniert hänge ich nach. :D
 

Anhänge

  • Aufgabe61.java
    1,2 KB · Aufrufe: 14
  • Aufgabe61b.java
    1,3 KB · Aufrufe: 5

rme

Top Contributor
Du hast da in beiden Fällen ein paar if-Anweisungen zur Berechnung der Ausgabe. Der Java-Compiler erkennt nicht, dass du alle Fälle abgedeckt hast und denkt deshalb, dass es einen Fall gibt, in dem "ausgabe" keinen Wert bekommt.

Lösung: Formulier es so, dass es diese Struktur hat:

Java:
if(...) {
 ausgabe = ...
} else if(...) {
 ausgabe = ...
} else {
 ausgabe = ...
}

In diesem Fall wird er es erkennen, da das else keine Bedingung mehr hat.
 

nvidia

Bekanntes Mitglied
[...]Der Java-Compiler erkennt nicht, dass du alle Fälle abgedeckt hast [...]

Nein daran liegt es nicht sondern das er der lokalen Variablen einfach keinen (definitiven) Wert zugewiesen hat. Das Mindeste wäre ein String ausgabe = null;. Das Ganze läuft unter dem Namen "definite assignment" und kann gerne nachgelesen werden, z.B. hier Definite Assignment.
 
Zuletzt bearbeitet:

rme

Top Contributor
Ihr habt natürlich Recht, dass die Ursache die nicht-initialisierte Variable ist. Es ist aber eine schlechte Idee, eine Variable mit null zu initialisieren und danach mit einem if-else-if-Konstrukt einen Wert zuzuweisen. Grund: Wenn die Variable nicht initialisiert ist, sucht der Compiler bei der ersten Verwendung rückwärts, ob sie auf allen Pfaden initialisiert wird. Wenn er beweisen kann, dass sie auf allen Pfaden initialisiert wird, ist das Ok und es gibt keiner Fehlermeldung. Deshalb funktioniert folgenden Code immer:

Java:
String x;
if(...) {
 x = ...;
} else {
 x = ...;
}

Es ist für den Compiler dann klar: Einer der beiden Pfade muss genommen werden, also wird x immer einen Wert haben. In diesem Fall ist das nicht so klar:
Java:
String x;
if(...) {
x = ...;
} else if(...) {
x = ...;
}

In diesem Fall wird der Compiler prüfen, ob das else-if immer zutrifft, wenn das if nicht zutrifft - denn dann würde x immer einen Wert haben und alles wäre Ok. Wenn er das nicht kann, gibt er die Fehlermeldung aus, dass x möglicherweise nicht initialisiert ist. Das deutet auf ein mögliches Problem im Code hin.

Mit der vorgeschlagenen Lösung, String x = null; zu benutzen und danach in die if-Anweisungen zu verzweigen, kann man sich eine NullPointerException einhandeln, wenn der Compiler Recht hatte und möglicherweise keiner der if-else-if-Pfade zur Initialisierung von x führt. Deshalb behebt diese Vorgehensweise zwar das Symptom, aber das eigentliche Problem des möglichen fehlenden Pfades bleibt vorhanden.

Deshalb: Es ist besser, seine Variablen in Methoden nicht direkt beim Deklarieren mit null zu initialisieren, denn damit schaltet ihr diverse Prüfungen und Optimierungen (!) des Compilers aus, ob euer Code sinnvoll ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Weiß jemand wie man dieses Programm schreibt? Java Basics - Anfänger-Themen 84
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
H Fehler: NullPointerException und ich weiß net warum Java Basics - Anfänger-Themen 4
B Fehler, aber ich weiß nicht warum Java Basics - Anfänger-Themen 3
J Fehler im Code, aber ich weiß nicht wieso! Java Basics - Anfänger-Themen 6
A Fenster bleibt weiß Java Basics - Anfänger-Themen 7
B Signatur erstellen - Bild ist nur weiß Java Basics - Anfänger-Themen 0
M JavaFX: Fenster bleibt weiß Java Basics - Anfänger-Themen 3
N Ich weiß nicht, wie ich meinen Code richtig designen soll und komme nicht weiter Java Basics - Anfänger-Themen 4
N Erste Schritte HSV color space - schwarz und weiß nur anhand von Saturation oder Multiplikator ermitteln Java Basics - Anfänger-Themen 14
J GUI wird direkt nach dem erstellen weiß übermalt Java Basics - Anfänger-Themen 3
M Weiß nicht, wie ich es nennen soll. Java Basics - Anfänger-Themen 1
J Vererbung Kleiner Fehler, weiß aber nicht warum und wo Java Basics - Anfänger-Themen 9
M ArrayList - remove() löscht nicht! - weiß nicht wieso! Java Basics - Anfänger-Themen 8
H Variable ändert wert und ich weiß nicht warum Java Basics - Anfänger-Themen 3
O unexpected type - weiß nicht weiter! Java Basics - Anfänger-Themen 3
J Wert wird überschrieben, weiß nicht wieso Java Basics - Anfänger-Themen 2
I Weiß einfach nicht mehr weiter... Java Basics - Anfänger-Themen 3
X Ich weiß, wo der Fehler ist, kann ihn aber nicht beheben Java Basics - Anfänger-Themen 2
H contains (für LIST) funktioniert nicht - ich weiß nicht warum? Java Basics - Anfänger-Themen 7
B JList wird nach Ändern weiß Java Basics - Anfänger-Themen 11
P Paket einbinden: Mal Braun, mal weiß Java Basics - Anfänger-Themen 2
U Animation bleibt leer (weiß) Java Basics - Anfänger-Themen 5
N ich weiß nicht weiter. Java Basics - Anfänger-Themen 13
M java.lang.IndexOutOfBoundsException weiß nicht warum Java Basics - Anfänger-Themen 8
X Weiß nicht weiter! Java Basics - Anfänger-Themen 73
F Servlets, Formulare und ich weiß keine Lösung Java Basics - Anfänger-Themen 4
U Kann mir jemand helfen? Java Basics - Anfänger-Themen 2
T Kann mir jemand wörtlich erklären, was in dem Code genau passiert? Java Basics - Anfänger-Themen 1
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
C Kann mir jemand sagen warum public void unzulässig ist? Java Basics - Anfänger-Themen 2
C Kann mir jemand sagen warum ich nicht mal rechnen kann ? Java Basics - Anfänger-Themen 32
C Kann mir jemand helfen was mit diesen Fehlern gemeint ist ? Java Basics - Anfänger-Themen 12
M Kennt jemand die richtige Lösung? Java Basics - Anfänger-Themen 7
F Kann mir jemand kurz dieses Programm erklären? Java Basics - Anfänger-Themen 22
HeiTim Kann mir Jemand helfen ? Java Basics - Anfänger-Themen 11
H Versteht jemand diesen Codewars Error? Java Basics - Anfänger-Themen 8
M BerechneEtwas Weiss jemand woran es liegt Java Basics - Anfänger-Themen 8
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 2
M Kann mir jemand hier die Logik vermitteln? Java Basics - Anfänger-Themen 3
M Kann mir jemand die Logik erklären? Java Basics - Anfänger-Themen 1
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 9
T Ich habe eine Variabel die nicht Methoden übergreifend ist. Kann mir jemand Helfen :) Java Basics - Anfänger-Themen 5
marcooooo Kann mir jemand das Beispiel kurz erklären so ungefähr:/ Java Basics - Anfänger-Themen 7
A Kann mir Jemand erklären wie ich das iteriere? Java Basics - Anfänger-Themen 4
G Fehlersuche-kann mir jemand helfen? Java Basics - Anfänger-Themen 46
T Kann jemand kurz das Programm testen? Java Basics - Anfänger-Themen 13
T Aufgabe Flussdiagramm, kann jemand checken? Java Basics - Anfänger-Themen 8
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
Y kann jemand die Terme mit Zahlen schreiben ?? Java Basics - Anfänger-Themen 4
R Kann mir hier jemand weiterhelfen? Java Basics - Anfänger-Themen 1
B Java -Turtle Grafik - kennt sich jemand damit aus? Java Basics - Anfänger-Themen 1
A Kann mir jemand dieses Programm erklären? Java Basics - Anfänger-Themen 1
B Kann mir jemand diese Bedingung erklären Java Basics - Anfänger-Themen 5
B Kann mir jemand erklären, warum hier dreimal was ausgegeben wird und nicht nur zweimal? Java Basics - Anfänger-Themen 16
B Könnte jemand über dieses jurze Javaprogramm schauen? Irgendwas funktioniert mit der z-Varible nicht Java Basics - Anfänger-Themen 2
E Input/Output Kann jemand meinen Code durchschauen? Java Basics - Anfänger-Themen 4
T Kann mir jemand sagen, was bei folgender for-Schleife passiert? Java Basics - Anfänger-Themen 1
F Versteht das jemand? -Java Java Basics - Anfänger-Themen 6
J TabelView - Kann mir jemand die Sequenz genau erklären ? Java Basics - Anfänger-Themen 2
K Könnte mir jemand erläutern, was der autor damit meint? Java Basics - Anfänger-Themen 5
J Kann mir bitte mal jemand diese Codes erklären? Java Basics - Anfänger-Themen 19
A Hat jemand einen ratschlag, wie java beim replaceALL eine geschweifte klammer erkennt ? Java Basics - Anfänger-Themen 5
H Java Hamster - kann mir jemand weiterhelfen? Java Basics - Anfänger-Themen 4
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Java Basics - Anfänger-Themen 4
R Kann jemand diese Java Programmierung machen? Versteh ich leider nicht Java Basics - Anfänger-Themen 17
R kann mir jemand erklären was hier gemacht wurde? Java Basics - Anfänger-Themen 10
I kann mir jemand weiterhelfen, wo liegen die Fehler? Java Basics - Anfänger-Themen 3
E Kann mir jemand sagen was hier falsch ist? Java Basics - Anfänger-Themen 6
gonzoradio Hat jemand Erfahrung mit javavideokurs.de Java Basics - Anfänger-Themen 5
D Kann mir vielleicht jemand die reflexive Assoziation erklären? Java Basics - Anfänger-Themen 2
C Hat jemand Ahnung zum GCJ(Gnu Compiler for Java) Java Basics - Anfänger-Themen 7
S Kann mir jemand kurz die Vorteile des Iterators erklaeren..? Java Basics - Anfänger-Themen 8
M Kann mir bitte jemand "java.util.ArrayList" erklären? Java Basics - Anfänger-Themen 5
S Kennt jemand die Default-Cache Zeit beim Java-Plugin? Java Basics - Anfänger-Themen 2
B könnte nochmal jemand über mein Projekt schauen? Java Basics - Anfänger-Themen 4
S unschöne schleifen.jemand ne bessere idee Java Basics - Anfänger-Themen 4
K Kennt jemand ein gutes Tutorial für Wertübergabe? Java Basics - Anfänger-Themen 4
G Kann mir jemand das erklären? Java Basics - Anfänger-Themen 11
S Hat jemand eine Idee warum die JLabels nicht mehr farbig Java Basics - Anfänger-Themen 7
G Hoffe jemand kann mir ein paar Tips geben:binärer Suchbaum Java Basics - Anfänger-Themen 3
G Nutzt Jemand JCalendar? Java Basics - Anfänger-Themen 3
C Kann jemand mir helfen? Java Basics - Anfänger-Themen 15
N Kann mir bitte jemand helfen? Java Basics - Anfänger-Themen 6
M Kann mir jemand erklären, wie "static" funktionier Java Basics - Anfänger-Themen 2
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben