[Java] variable answer might not have been initialized 원인과 해결
오늘도 에러를 만났다.
오늘 만난 에러는 variable answer might not have been initialized.
번역하면, 변수 응답이 초기화되지 않았을 수 있습니다.
이 오류는 변수가 선언되었지만 사용되지 전에 값이 할당되지 않은 경우 발생하는 컴파일러 오류다.
Java에서는 모든 변수를 사용하기 전에 초기화해야 한다.
변수에 초기 값을 할당하지 않고 변수를 선언하면 컴파일러에서 변수에 기본 값으로 0 또는 null을 준다는 것을
알고 있을 것이다.
그러나 변수에 값을 할당하기 전에 변수를 사용하려고 하면 컴파일러에서 위와 같은 에러 메시지를 보낸다.
내가 어떻게 코드를 작성했기에 이런 에러를 만났는지 보자면,
여기 이렇게 boolean 변수를 선언하고 아직 false인지 true인지 지정해주지 않았기 때문이다.
그런데 정말로 내가 값을 지정 안했을까? 아니 사실 밑에 값을 지정해 주는 코드가 있었다.
if('A' == 'B'){
answer = true;
}else{
answer = false;
}
이런 코드가 아래에 있었다. 나는 분명 값을 지정해준 것처럼 보이지만, 사실 IF문 내에서는 조건이 true인 경우에만
값이 할당된다. false 일때에는 값을 할당받지 않는다는 뜻.
그래서 내 결과값이 false가 되는 경우, 컴파일러는 answer 변수의 값이 할당되지 않았다고 인식하는 오류이다.
이 오류를 수정하려면 변수를 코드에서 사용하기 전에 항상 기본값으로 변수를 초기화하거나 변수에 값을 할당해야 한다.
boolean answer = false;
이렇게 초기에 값을 지정해 주고 시작하는 거다.
그러면 IF문의 조건이 false인 경우에도 잘 작동한다.