✅ 자바 제어문 완전 정복: if, switch, for, while 총정리
자바 입문자라면 반드시 익혀야 하는 흐름 제어 문법들!
조건에 따라 분기하고, 반복하는 기본 구조를 정리해보자.
🧩 1. if 문 — 조건에 따라 분기하자
조건이 true일 때만 블록 안의 코드를 실행하는 문법.
int age = 14;
if (age > 19) {
System.out.println("성인입니다.");
} else if (age > 13) {
System.out.println("청소년입니다.");
} else {
System.out.println("어린이입니다.");
}
✅ 설명
- if: 조건이 참일 때 실행
- else if: 앞이 거짓이고, 여기가 참일 때 실행
- else: 위 조건 전부 거짓일 때 실행
중괄호 {}는 한 줄일 경우 생략 가능하지만, 가독성을 위해 생략하지 않는 것을 추천!
📐 예제 - 좌표로 사분면 구하기
// 1. 각 조건식에서 저장할 문자열값(사분면의 위치)을 담을 변수 선언
String functionScope = null; // String과 같은 참조 자료형은 기본값(비워져 있음)을 null로 표시
// 2. 스캐너 생성
Scanner sc = new Scanner(System.in);
System.out.println("x: ");
int x = sc.nextInt();
System.out.println("y: ");
int y = sc.nextInt();
// 3. 조건문 작성
if (x > 0 && y > 0) {
// x, y가 모두 양수: 제 1사분면
functionScope = "제1사분면";
} else if (x < 0 && y > 0) {
functionScope = "제2사분면";
} else if (x < 0 && y < 0) {
functionScope = "제3사분면";
} else {
functionScope = "제4사분면";
}
// 4. functionScope 값 출력
System.out.println("결과: " + functionScope);
// 5. 스캐너 종료
sc.close();
🎯 2. switch 문 — 정확한 값 비교
변수의 값이 정확히 일치할 때 다른 동작을 실행하고 싶을 때 사용!
int chapter = sc.nextInt();
switch (chapter) {
case 1:
System.out.println("자바 기본 문법");
break; // 해당 case의 실행이 끝나면 switch 문을 빠져나옴! (break 뒤에 문장 작성 X)
case 2:
System.out.println("자바 제어문");
break;
default:
System.out.println("해당하는 챕터가 없습니다.");
}
✅ 설명
- case가 일치하면 해당 블록 실행
- break 없으면 아래 case도 쭉 실행됨 (fall-through 현상)
- default: 어떤 case에도 해당 안 될 때 실행
🍎 예제 - 과일 색상 구분기
String fruit = sc.nextLine();
switch (fruit) {
case "apple":
System.out.println("빨간색");
break;
case "banana":
System.out.println("노란색");
break;
default:
System.out.println("등록되지 않은 과일입니다.");
}
🔁 3. for 문 — 반복 횟수가 정해졌을 때
for (int i = 1; i <= 5; i++) {
System.out.print(i); // 12345
}
✅ 설명
- (초기화; 조건식; 증감식)
- 조건이 참이면 실행 → 증감 → 다시 조건 체크
- 주로 횟수 기반 반복에 적합
📚 예제 - 짝수 출력기
for (int i = 1; i <= 10; i++) { // i는 1부터 10까지 반복
if (i % 2 == 0) { // 조건식을 통해 짝수만 출력
System.out.print(i); // 246810
}
}
📊 예제 - 3단 구구단
// : 구구단 (3단)
System.out.println();
System.out.println("=== 3단 ===");
int num = 3; // '3'단
for (int i = 1; i <= 9; i++) {
System.out.println("3 X " + i + " = " + num * i);
}
🌀 예제 - 전체 구구단 출력 (2단 ~ 9단)
java
복사편집
for (int i = 2; i <= 9; i++) { System.out.println("[ "
// >> 2단 ~ 9단까지 반복 (8번 반복)
// >> 각 단의 내부에서는 1부터 9까지 숫자 반복 (9번 반복)
for(int i = 0; i < 8; i++) {
// 2단부터 9단까지 반복
int dan = i + 2;
System.out.println("[ " + dan + "단 ]");
// System.out.println("[ " + (i + 2) + "단 ]");
for(int j = 0; j < 9; j++) {
int number = j + 1; // 1부터 9까지 반복
System.out.println(dan + " X " + number + " = " + dan * number);
}
}
🧭 4. while 문 — 조건 기반 반복
조건이 참이면 계속 반복! 단, 반복 횟수가 정해져 있지 않을 때 자주 사용.
// 초기화식
int num = 1;
while (num <= 5) { // 조건식
System.out.print(num);
num++; // 증감식
}
⛔ break / continue 예제
int number = 0;
while (true) { // if문 & while문의 조건식은 결과값이 논리형(boolean)
// : while문의 조건식을 true 값으로 고정하는 경우
// , 종료시점(break)을 개발자가 직접 명시하지 않으면 무한 루프 발생! (무한루프 종료 ctrl + f2)
// >> 프로그램의 과부하 방지를 위해 지양
if (number % 2 == 0) { // 짝수
number++; // 다음 수(홀수)를 위한 작업
continue; // 조건식으로 다시 돌아감!
}
System.out.println(number); // 홀수만 해당 내용 실행
number++; // 다음 수(짝수)를 위한 작업
if (number == 20) break;
}
🔁 do-while 문 — 무조건 1번은 실행
int doNum = 1;
do {
System.out.println(doNum);
doNum++;
} while (doNum <= 5);
✅ 차이점
| 종류 | 조건 검사 시점 | 최초 실행 횟수 |
| while | 실행 전 검사 | 0 |
| do-while | 실행 후 검사 | 1 |
🧪 사용자 입력 예제 – 1~10 사이 숫자 입력받기
Scanner sc = new Scanner(System.in);
int inputNumber;
do {
System.out.println("1부터 10 사이의 숫자를 입력하세요 :)");
inputNumber = sc.nextInt();
} while (inputNumber < 1 || inputNumber > 10); // 1 ~ 10 사이인 경우 반복문 종료
System.out.println("올바른 숫자: " + inputNumber);
// cf) while 문은 반복 전에 조건을 검사하기 때문에, 초기 입력 코드를 반복문 밖에 따로 작성
System.out.println("1 ~ 10 사이의 숫자를 입력하세요");
inputNumber = sc.nextInt(); // 조건 검사 전 입력을 받기 위한 코드 중복 발생
while (inputNumber < 1 || inputNumber > 10) {
System.out.println("다시 입력하세요. (1 ~ 10)");
inputNumber = sc.nextInt();
}
✨ 마무리 요약
- if / else: 조건 분기
- switch: 정확한 값 비교
- for: 반복 횟수 고정
- while / do-while: 조건 기반 반복
- break, continue: 흐름 제어
📝 참고 & 꿀팁
- 코드 정렬 단축키 (IntelliJ): Ctrl + Alt + L
- 출력 안 될 땐 Scanner 개행 문자 처리 주의!
- 반복문 중첩 시에는 변수 이름 겹치지 않게 조심
'Back-End > Java' 카테고리의 다른 글
| 객체 지향 프로그래밍(OOP) 란? (3) | 2025.07.28 |
|---|---|
| 자바 배열의 모든 것: 코드로 배우는 핵심 개념 (2) | 2025.07.23 |
| 자바 입문 0→1: 개념 부수고 실력 올리기 (1) | 2025.07.17 |
| 자바 처음 시작한다면 꼭 봐야 할 기초 개념 모음 (0) | 2025.07.15 |
| 개발자를 위한 Git & GitHub 완벽 연동 가이드 (0) | 2025.07.12 |