[자바] 4. 조건문과 반복문

[자바] 4. 조건문과 반복문

목차

자바 조건문과 반복문은 프로그램의 실행 흐름을 제어하는 제어문의 핵심이다. 코드는 기본적으로 위에서 아래로 한 문장씩 순차적으로 실행되지만, 조건에 따라 특정 문장을 건너뛰거나 같은 문장을 여러 번 반복해야 할 때가 있다. 이 글에서는 자바 조건문(if·if-else·switch)과 반복문(for·while·do-while)의 문법과 사용법을 예제와 함께 정리한다.

제어문이란

프로그램의 흐름을 바꾸는 역할을 하는 문장을 제어문이라고 한다. 제어문에는 크게 두 종류가 있다. 조건문은 주어진 조건이 참인지 거짓인지에 따라 서로 다른 문장이 수행되도록 하고, 반복문은 특정 조건이 만족되는 동안 같은 문장을 여러 번 반복해서 수행한다.

조건문과 반복문 안에서 여러 문장을 하나로 묶을 때는 중괄호 {} 블록을 사용한다. 블록 안에 문장이 하나뿐이면 중괄호를 생략할 수 있지만, 가독성과 실수 방지를 위해 항상 중괄호를 붙이는 것이 좋다.

자바 조건문

if 문

if 문은 조건식이 참(true)일 때만 블록 안의 문장을 실행한다. 조건식에는 비교 연산자나 논리 연산자를 사용해 true/false를 판별할 수 있는 식이 들어간다.

int score = 85;

if (score >= 60) {
    System.out.println("합격입니다.");
}

if-else 문

if-else 문은 조건식이 참일 때와 거짓일 때 각각 다른 문장을 실행한다. 조건이 참이면 if 블록을, 거짓이면 else 블록을 수행한다.

int score = 50;

if (score >= 60) {
    System.out.println("합격입니다.");
} else {
    System.out.println("불합격입니다.");
}

if-else if 문

처리해야 할 경우의 수가 셋 이상일 때는 if-else if 문을 사용한다. 위에서부터 차례로 조건식을 검사해, 처음으로 참이 되는 블록만 실행하고 나머지는 건너뛴다. 예를 들어 점수에 따라 학점을 매기는 코드는 다음과 같다.

int score = 85;

if (score >= 90) {
    System.out.println("A");
} else if (score >= 80) {
    System.out.println("B");
} else if (score >= 70) {
    System.out.println("C");
} else {
    System.out.println("F");
}

중첩 if 문

if 문 안에 또 다른 if 문을 넣은 것을 중첩 if 문이라고 한다. 여러 조건을 단계적으로 검사할 때 사용한다.

int score = 85;
char grade;

if (score >= 80) {
    if (score >= 90) {
        grade = 'A';
    } else {
        grade = 'B';
    }
} else {
    grade = 'C';
}
System.out.println(grade);

switch 문

switch 문은 하나의 변수 값을 여러 값과 비교해 일치하는 case의 문장을 실행한다. 경우의 수가 많고 조건이 단순한 등치 비교일 때, if-else if 문보다 간결하고 읽기 쉽다. 각 case 끝에는 break를 붙여 switch 문을 빠져나가고, 일치하는 case가 없을 때는 default 블록이 실행된다.

int month = 3;

switch (month) {
    case 3:
    case 4:
    case 5:
        System.out.println("봄");
        break;
    case 6:
    case 7:
    case 8:
        System.out.println("여름");
        break;
    default:
        System.out.println("그 외 계절");
}

switch 문에는 제약 조건이 있다. 비교에 사용하는 값은 정수형(byte·short·int), 문자형(char), 문자열(String, 자바 7 이상), 열거형(enum)만 가능하며, case 문에는 변수가 아닌 상수(리터럴)만 올 수 있다. 또한 break를 빠뜨리면 일치한 case 아래의 문장까지 연달아 실행되므로 주의해야 한다.

자바 반복문

for 문

for 문은 반복 횟수가 정해져 있을 때 주로 사용한다. 초기화·조건식·증감식을 한 줄에 모아 쓰기 때문에 반복 구조를 한눈에 파악하기 좋다. 초기화는 처음 한 번만 실행되고, 조건식이 참인 동안 블록을 반복하며, 매 반복이 끝날 때마다 증감식이 실행된다.

for (int i = 1; i <= 5; i++) {
    System.out.println(i + "번째 출력");
}

중첩 for 문

for 문 안에 for 문을 넣으면 중첩 for 문이 된다. 구구단이나 별 찍기처럼 행과 열로 이루어진 2차원 반복에 자주 쓰인다.

for (int i = 2; i <= 9; i++) {
    for (int j = 1; j <= 9; j++) {
        System.out.println(i + " x " + j + " = " + (i * j));
    }
}

while 문

while 문은 조건식이 참인 동안 블록을 반복한다. 반복 횟수가 정해져 있지 않고 특정 조건이 만족될 때까지 반복해야 할 때 적합하다. 조건식을 false로 만드는 코드가 블록 안에 없으면 무한 루프에 빠지므로 주의한다.

int i = 1;

while (i <= 5) {
    System.out.println(i + "번째 출력");
    i++;
}

do-while 문

do-while 문은 while 문과 비슷하지만, 조건식을 블록 실행 뒤에 검사한다. 따라서 조건이 처음부터 거짓이더라도 블록이 최소 한 번은 실행된다는 점이 다르다.

int i = 1;

do {
    System.out.println(i + "번째 출력");
    i++;
} while (i <= 5);

break 문과 continue 문

반복문의 흐름을 더 세밀하게 제어할 때 breakcontinue를 사용한다. break는 반복문을 즉시 빠져나가고, continue는 현재 반복만 건너뛰고 다음 반복으로 넘어간다.

for (int i = 1; i <= 10; i++) {
    if (i == 6) {
        break;        // i가 6이면 반복 종료
    }
    if (i % 2 == 0) {
        continue;     // 짝수면 출력하지 않고 다음 반복으로
    }
    System.out.println(i);  // 1, 3, 5 출력
}

중첩 반복문에서는 이름 붙은 반복문(라벨)을 사용해 안쪽 반복문에서 바깥쪽 반복문까지 한 번에 빠져나갈 수 있다. 반복문 앞에 라벨을 붙이고 break 라벨; 형태로 사용한다.

outer:
for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
        if (i * j > 4) {
            break outer;   // 바깥 반복문까지 한 번에 종료
        }
        System.out.println(i + ", " + j);
    }
}

정리

  • 조건문: 단순 분기는 if·if-else, 여러 갈래는 if-else if, 등치 비교가 많으면 switch.
  • 반복문: 횟수가 정해졌으면 for, 조건 기반이면 while, 최소 한 번 실행이 필요하면 do-while.
  • 흐름 제어: break는 반복 종료, continue는 현재 반복 건너뛰기, 라벨로 중첩 반복문 한 번에 탈출.

조건문과 반복문은 모든 프로그램의 기본 골격이 되는 문법이다. 위 예제를 직접 작성하며 실행 흐름이 어떻게 바뀌는지 확인해 보면 제어문의 동작을 더 확실히 익힐 수 있다.

💬 댓글 0

💬 댓글을 남기려면?
첫 댓글을 남겨보세요 ✨

이 콘텐츠가 도움이 됐나요?

누스쿨 커뮤니티에서 더 많은 커리어 전략을 나눠요