세미콜론을 잘못 써서 그렇습니다.
if (x); { } else {} 이렇게 하면
if (x); <= 여기서 if문이 일단락이 되고
{} <= 여기서 새로운 스코프(if와 관련없는)가 발생하죠.
그러면 그 다음 else는 앞의 if와 연결이 될 수가 없습니다.
즉, 위는 if (x) {} {} else {}와 같습니다.
이건 그냥 틀린 겁니다.
if (x) {[1]} else {[2]} 요로케 {[1]}이 if에 종속이 되면
그 뒤에 있는 else도 if와 연결이 되어 하나의 구문이 됩니다.
위가 정석의 코딩법으로 보기도 좋고
영역의 구문도 확실하죠.
아래는 일반적 방법..
지금 if나 else문에 종속된 명령이 한줄이기 때문에 {} 생략 가능..