조건 (err == false
)은 i1
및 i2
이 사용되기 전에 초기화되었는지 확인합니다. 그러나 일식은 i1
, i2
이 초기화되지 않았을 수도 있음을 보여줍니다. 확실히 i1
및 i2
을 0으로 초기화하고 문제를 해결하십시오. 그러나 처음부터 왜해야만하는지 궁금합니다.설명되지 않은 로컬 변수가 초기화되지 않았을 수 있음
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 일부 언어는 자동으로 0으로 초기화됩니다. –