Die Bedingung (err == false
) stellt sicher, dass i1
und i2
initialisiert werden, bevor sie verwendet werden. Die Eclipse zeigt jedoch an, dass i1
, i2
möglicherweise nicht initialisiert wurde. Sicher, i1
initialisieren und i2
zu Null und das Problem zu lösen, aber ich frage mich, warum ich an erster Stelle muss.ungeklärte lokale Variable wurde möglicherweise nicht initialisiert
String e1 = request.getParameter("e1");
String e2 = request.getParameter("e2");
if (e1 != null && e2 != null) {
int i1, i2;
boolean err = false;
try {
i1 = Integer.parseInt(e1);
if (i1 < 0) {
err = true;
}
} catch (Exception e) {
err = true;
}
try {
i2 = Integer.parseInt(e2);
if (i2 == 0) {
err = true;
}
} catch (Exception e) {
err = true;
}
if (err == false) {
out.println("Result = " + (i1/i2));
}
}
nur denken, was ist, wenn sie nicht initialisiert wurden? – Ravi
Es ist Teil der Spezifikation, Java möchte Variablen nicht automatisch auf "0" initialisieren und zwingt den Benutzer sicherzustellen, dass die Variablen initialisiert werden. Dies ist wahrscheinlich, um undefiniertes Verhalten zu vermeiden. –
@Ravi Einige Sprachen würden sie automatisch auf Null initialisieren. –