
이미지 출처: Pexels (han-chieh-lee) · Pexels License
지난 편에서 비교·논리 연산의 결과가 **참(true)/거짓(false)**으로 나온다고 했습니다. 이 참·거짓으로 프로그램이 길을 고르게 하는 것이 오늘의 주제, 조건문입니다.
if — 참일 때만 실행합니다
if 뒤 괄호 안이 참이면 블록을 실행하고, 거짓이면 건너뜁니다.
int age = 20;
if (age >= 19) {
System.out.println("성인입니다.");
}
쉽게 —
if는 문지기입니다. "19세 이상입니까?"를 통과한 사람만 안으로 들여보냅니다. 조건이 거짓이면 문 안 코드는 아예 실행되지 않습니다.
if-else — 참이면 A, 아니면 B
양 갈래로 나뉩니다.
int age = 15;
if (age >= 19) {
System.out.println("성인입니다.");
} else {
System.out.println("미성년자입니다.");
}
else if — 갈래가 여럿일 때
조건을 위에서부터 차례로 검사하고, 처음 참이 되는 하나만 실행합니다.
int score = 85;
if (score >= 90) {
System.out.println("A");
} else if (score >= 80) {
System.out.println("B"); // 여기 실행
} else {
System.out.println("C");
}
switch — 값이 딱 정해진 갈래
값이 몇 가지로 딱 떨어질 때는 switch가 깔끔합니다. 등수로 메달 색을 정하는 예입니다.
int ranking = 2;
switch (ranking) {
case 1:
System.out.println("금메달");
break;
case 2:
System.out.println("은메달"); // 여기 실행 후 탈출
break;
case 3:
System.out.println("동메달");
break;
default:
System.out.println("메달 없음");
}
쉽게 —
switch는 번호표 창구입니다. 손님의 번호(값)에 맞는 창구(case)로 곧장 보냅니다.
단골 함정 — switch에서 break를 빼먹으면
case마다 끝에 **break**가 있어야 그 창구에서 일을 마치고 빠져나옵니다. break를 빼먹으면, 일치한 case 아래의 case들이 줄줄이 함께 실행됩니다(폴스루).
int ranking = 1;
switch (ranking) {
case 1:
System.out.println("금메달");
case 2:
System.out.println("은메달"); // break가 없어서 여기까지 실행됨!
break;
}
// 출력: 금메달 / 은메달 (원치 않은 결과)

규칙 — 특별한 의도가 없다면 모든
case마다break를 꼭 붙입니다. 이걸 놓쳐서 생기는 버그가 초보에게 아주 흔합니다.
한 장 정리
| 상황 | 문법 |
|---|---|
| 참일 때만 | if |
| 참/거짓 두 갈래 | if ~ else |
| 여러 갈래(범위) | if ~ else if ~ else |
| 값이 딱 정해진 갈래 | switch ~ case (+ break) |
이것만 기억하면 됩니다. if는 참일 때만 들여보내는 문지기, else if는 위에서부터 처음 참인 하나만, switch는 정해진 값별 창구입니다. 그리고 switch의 case엔 break를 꼭 붙입니다.
미니 퀴즈
개념을 제대로 잡았는지 직접 풀어 봅니다. 정답은 눌러야 나옵니다.
미니 퀴즈
포켓코딩(JAVA1) 6편 · 예제 출처: 강사 개인 GitHub 저장소. 다음 편: 반복문 — 똑같은 일 여러 번(FOR·WHILE).