
boolean)에 따라 코드 실행 흐름을 제어.if, if-else, if-else if, switch// if
if (조건식) {
// 참일 때 실행
}
// if-else
if (조건식) {
// 참
} else {
// 거짓
}
// if-else if (여러 분기)
if (조건1) {
} else if (조건2) {
} else {
}
예제 (짝수 판단)
int n = sc.nextInt();
if (n % 2 == 0) System.out.println("짝수");
System.out.println("프로그램 종료");
예제 (학점 분기 – 개선형)
int score = sc.nextInt();
String grade;
if (score >= 90) grade = "A";
else if (score >= 80) grade = "B";
else if (score >= 70) grade = "C";
else if (score >= 60) grade = "D";
else grade = "F";
if ((score >= 60 && score % 10 >= 5) || score == 100) grade += "+";
System.out.println(grade);
break를 넣지 않으면 fall-through 발생.switch (op) {
case '+': result = a + b; break;
case '-': result = a - b; break;
case '*': result = a * b; break;
case '/': result = a / b; break; // 0 체크 필수!
case '%': result = a % b; break;
default : System.out.println("지원하지 않는 연산");
}
| 문법 | 이런 상황에 |
|---|---|
for | 반복 횟수를 알 때, 배열/범위 순회 |
while | 조건이 만족할 때까지 반복(입력/파일 처리 등) |
do-while | 최소 1회 실행이 필요한 경우(메뉴, 에코 입력) |
// 기본형
for (int i = 1; i <= 10; i++) {
// 반복 구문
}
합계 (1~N)
int n = sc.nextInt();
int sum = 0;
for (int i = 1; i <= n; i++) sum += i;
System.out.println(sum);
작은 수 ~ 큰 수 합계
int a = sc.nextInt(), b = sc.nextInt();
int min = Math.min(a, b), max = Math.max(a, b);
int sum = 0;
for (int i = min; i <= max; i++) sum += i;
System.out.println(sum);
구구단 (단 하나)
int dan = sc.nextInt();
if (2 <= dan && dan <= 9) {
for (int su = 1; su <= 9; su++)
System.out.println(dan + " * " + su + " = " + dan * su);
} else {
System.out.println("2~9 사이 정수 입력");
}
구구단 (2~9 전체, 메소드 분리)
for (int dan = 2; dan <= 9; dan++) {
printGugu(dan);
System.out.println();
}
static void printGugu(int dan) {
for (int su = 1; su <= 9; su++)
System.out.println(dan + " * " + su + " = " + dan * su);
}
int i = 1;
while (i <= n) {
// 반복 구문
i++;
}
문자열 인덱스 순회
String s = sc.nextLine();
int i = 0;
while (i < s.length()) {
System.out.println(i + " : " + s.charAt(i));
i++;
}
합계 (1~N)
int n = sc.nextInt(), i = 1, sum = 0;
while (i <= n) sum += i++;
System.out.println(sum);
구구단 (중첩 while)
int dan = 2;
while (dan <= 9) {
int su = 1;
while (su <= 9) System.out.println(dan + " * " + su + " = " + dan * su++);
System.out.println();
dan++;
}
do {
// 최소 1회 실행
} while (조건식);
에코 프로그램 (exit 입력 시 종료)
String s;
do {
s = sc.nextLine();
System.out.println(s);
} while (!s.equals("exit"));
System.out.println("프로그램 종료");
break : 반복/스위치 즉시 종료continue : 이번 회차만 건너뛰고 다음 반복으로// 1~100 합 (무한루프 + break)
int i = 1, sum = 0;
while (true) {
sum += i;
if (i == 100) break;
i++;
}
System.out.println(sum);
중첩 반복 + break (5 초과는 스킵)
for (int dan = 2; dan <= 9; dan++) {
for (int su = 1; su <= 9; su++) {
if (su > 5) break; // 안쪽 반복만 종료
System.out.println(dan + " * " + su + " = " + dan * su);
}
System.out.println();
}
라벨 break (바깥 루프까지 종료)
outer:
for (;;) {
for (int i = 0; i < 10; i++) {
if (i == 3) break outer; // 바깥까지 한 번에 탈출
}
}
// 1~100 중 4와 5의 공배수만 출력
for (int i = 1; i <= 100; i++) {
if (!(i % 4 == 0 && i % 5 == 0)) continue;
System.out.println(i);
}
중첩 반복 + continue (짝수 su 건너뛰기)
for (int dan = 2; dan <= 9; dan++) {
for (int su = 1; su <= 9; su++) {
if (su % 2 == 0) continue; // 이번 회차만 스킵
System.out.println(dan + " * " + su + " = " + dan * su);
}
System.out.println();
}
라벨 continue (바깥 루프의 다음 회차로 점프)
outer:
for (int dan = 2; dan <= 9; dan++) {
for (int su = 1; su <= 9; su++) {
if (su % 2 == 0) continue outer; // 다음 단로 넘어감
System.out.println(dan + " * " + su + " = " + dan * su);
}
System.out.println();
}
default 넣고, break 빠뜨리지 않도록 주의.equals.