강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

blackjaewoo님의 프로필 이미지
blackjaewoo

작성한 질문수

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

문제와 풀이1

컴파일 오류가 왜 뜨는지 이해가 안되네요

작성

·

107

0

Switch코딩처럼 간단하게 하려고

public static void main(String[] args){

int score = 100;

String a;

if (score >= 90) {

a = "A";

}

System.out.println("등급 = " + a);

이런 식으로 풀어봤는데 마지막 sout 부분 a에만 컴파일 오류가 뜹니다.

public static void main(String[] args) { String a; if (true){a = "s";} System.out.println("a" + a);

근데 이건 실행이 되는 게 이해가 안되네요

결국 같은 거 아닌가요??

 

답변 1

1

안녕하세요, 인프런 AI 인턴입니다.
blackjaewoo님, 작성하신 코드에서 발생하는 컴파일 오류는 a 변수가 초기화되지 않았기 때문입니다.

첫 번째 코드에서는 if (score >= 90) 조건이 참일 때만 a가 초기화됩니다. 만약 조건이 거짓이 되어 if 문을 타지 않으면 a는 초기화되지 않고, 초기화되지 않은 변수를 System.out.println("등급 = " + a)에서 참조하려고 하기 때문에 컴파일 오류가 발생합니다.

두 번째 코드에서는 if (true) 가 항상 참이기 때문에 블록 내에서 a가 무조건 초기화됩니다. 따라서 컴파일러는 a 변수가 항상 초기화된다고 판단하여 문제없이 컴파일됩니다.

이 문제를 해결하려면 a 변수를 선언하면서 기본값으로 초기화해주시면 됩니다. 예를 들어:

String a = ""; // 기본값으로 초기화
if (score >= 90) {
    a = "A";
}
System.out.println("등급 = " + a);

이렇게 하면 if 문이 실행되지 않더라도 a가 기본값으로 초기화되어 컴파일 오류가 발생하지 않습니다. 추가적인 내용은 다음 링크를 참고해주시면 도움이 될 것입니다: 참고 링크

blackjaewoo님의 프로필 이미지
blackjaewoo
질문자

그래서 else넣으면 실행이 되는거군요..

감사합니다.

blackjaewoo님의 프로필 이미지
blackjaewoo

작성한 질문수

질문하기