컴파일 오류가 왜 뜨는지 이해가 안되네요
123
1 asked
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);
근데 이건 실행이 되는 게 이해가 안되네요
결국 같은 거 아닌가요??
Answer 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가 기본값으로 초기화되어 컴파일 오류가 발생하지 않습니다. 추가적인 내용은 다음 링크를 참고해주시면 도움이 될 것입니다: 참고 링크
문제와 풀이4 문제점
0
41
2
문제풀이 시간마다 방향성
0
39
2
피라미드 문제 풀이
0
71
1
ScannerWhile3 예제 코드 질문
0
55
1
짝수 출력 문제 질문
0
50
1
Array 연습 문제 5번 질문입니다.
0
84
2
단축어가 이상하게 나옵니다
0
128
2
Sql강의
0
90
1
array 문제풀이 2번 질문입니다.
0
55
1
JAVA입문 / 메서드편 문제와 풀이2
0
47
1
인텔리제이 무료버젼이 통합되었다는데 30일 무료버전이면 어떻게 사용하나요
1
800
3
OperationEx3에서 꼭 boolean을 써야 하나요?
0
59
1
for, while문 작성
0
65
1
68강 ArrayEx6 클래스 질문
0
60
1
IO.println(String.format("Hello and welcome!"));
0
149
2
소스코드 실행이 안돼요
0
119
2
메서드 문제와 풀이2에서 마지막 문제 이렇게 풀어도 괜찮은 건가요..?
0
79
1
While과 for 스코프 질문
0
63
1
김영한 java 입문 설치 질문
0
137
2
버퍼문제?
0
54
1
for문 피라미드 찍는거 질문
0
78
1
21버전이 없고, 강의 메뉴얼 확인해보면 된다는 김영한 선생님 답변 확인했습니다.
0
373
1
3번 문제 질문 있습니다.
0
99
2
sout에는 변수가 하나만 들어가야 하나요?
0
134
1

