条件(err == false
)は、使用する前にi1
およびi2
が初期化されていることを確認します。しかし、日食はi1
、i2
が初期化されていない可能性があります。 確かに、i1
とi2
をゼロに初期化して問題を解決してください。しかし、なぜ私は最初にする必要があるのだろうかと思います。説明できないローカル変数が初期化されていない可能性があります。
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));
}
}
ちょっと考えておけば、初期化されていないのはどうでしょうか? – Ravi
これは仕様の一部ですが、Javaは変数を自動的に '0'に初期化したくないため、変数を初期化するように強制します。おそらく未定義の動作を避けるためです。 –
@Ravi言語によっては、自動的にゼロに初期化される言語もあります。 –