'
본문 바로가기
study/Programming

[JAVA 기초] 제어문 - 반복문

by meowdule 2025. 4. 29.

 

1. 반복문이란?


📌 반복문

💡 반복문은 특정 코드를 여러 번 실행할 수 있도록 도와주는 구문입니다.

즉, 같은 동작을 계속 반복해야 할 때 사용하는 문법입니다.


반복문의 핵심은 "반복 조건"을 정하고, 그 조건을 만족하는 동안 코드를 계속 실행하는 것입니다.

반복문을 사용하면 코드 길이는 줄어들고, 유지보수도 쉬워지며, 실수도 줄어듭니다.

 


📌 반복문 종류

자바에서 사용할 수 있는 대표적인 반복문은 총 3가지입니다.

  반복문 종류 설명
  for문 정해진 횟수만큼 반복할 때 사용합니다.
  while문 조건이 참인 동안 반복합니다.
  do-while문 조건과 관계없이 최소 1회 실행 후 반복 여부를 판단합니다.

각 반복문마다 사용하는 방식과 용도가 다르므로, 상황에 따라 적절히 선택하는 것이 중요합니다.

for / while / do-while 비교

 



📌 반복문 선택 기준

  상황 추천 반복
  반복 횟수를 알고 있을 때 for문
  반복 조건을 먼저 확인해야 할 때 while문
  무조건 한 번 실행한 후 반복 여부를 판단할 때 do-while문

구분 for문 while문 do-while문
실행 순서 조건 확인 후 실행 조건 확인 후 실행 실행 후 조건 확인
최소 1회
실행 보장
✅ (조건이 false여도 1회 실행)
반복 조건 기준 반복 횟수 명확 조건 기반 반복 조건 기반 반복 (1회는 반드시 실행)
사용 예 1부터 10까지 출력 등 사용자가 ‘exit’ 입력할 때까지 반복 등 메뉴 반복, 재시도 구조 등
UI에서 자주 사용
구성 요소 초기식, 조건식, 증감식 포함 조건식만 존재
(초기/증감식은 내부에 작성)
조건식만 존재
(조건은 반복 뒤에 검사)
추천 사용
시점
반복 횟수가 명확할 때 반복 종료 조건이
외부에 의해 결정될 때
최소 1회 실행이
보장되어야 하는 상황
예시 for (int i = 1; i <= 10; i++) while (!input.equals("exit")) do { ... } while (!input.equals("exit"));

 



📌 반복문의 기본 흐름도

for, while 반복문은 대부분 다음과 같은 흐름으로 작동합니다.

  • 초기식: 반복을 시작할 때 필요한 변수 선언
  • 조건식: 반복할 조건 (이 조건이 거짓이면 반복 종료)
  • 코드 실행: 반복 수행할 작업
  • 증감식: 변수의 값 조정 (예: +1 증가)

 

 

 

 

 

 

 

 

2. for 문


📌 for문

for문은 특정 코드를 정해진 횟수만큼 반복 실행할 수 있도록 해주는 제어문입니다.

💡 반복 횟수가 명확할 때 가장 많이 사용하는 반복문입니다.

 

  • for문은 반복 횟수가 정해졌을 때 가장 강력한 도구
  • 기본 구조: 초기식 → 조건식 → 실행 → 증감식 → 반복

 

 

 

for문은 아래와 같은 구조를 가지고 있습니다.

 
구성요소 역할
초기식 반복을 시작할 때 한 번만 실행
조건식 반복을 계속할지 판단 (true면 반복, false면 종료)
증감식 반복이 끝날 때마다 실행되는 부분 (i++ 등)

 


📌구성 요소 생략 및 변형

  • 조건식 생략 (무한 루프)
for(int i = 0;; i++) {
    System.out.println(i); // 무한 반복
}

 

  • 초기식 생략
int i = 1;
for(; i <= 5; i++) {
    System.out.println(i);
}

 

  • 증감식 생략 (안에서 처리)
for(int i = 1; i <= 5;) {
    System.out.println(i);
    i++; // 수동 증가
}

 

 

 

실습 예제

더보기

실습 예제 ①: 10명의 학생 이름 출력

Scanner sc = new Scanner(System.in);

for(int i = 1; i <= 10; i++) {
    System.out.print(i + "번째 학생 이름 입력: ");
    String name = sc.nextLine();
    System.out.println("→ 입력된 이름: " + name);
}

 

실습 예제 ②: 1부터 10까지 합계 구하기

int sum = 0;
for(int i = 1; i <= 10; i++) {
    sum += i;
}
System.out.println("1부터 10까지의 합은: " + sum);

 

 


📌중첩 for문 (Nested for loop) 이란?

for문 내부에 또 다른 for문이 들어간 형태의 반복문입니다.

  • 중첩 for문은 '반복 속의 반복'이 필요할 때 사용
  • 바깥 반복문: 큰 흐름 (예: 줄, 단 등)
  • 안쪽 반복문: 세부 반복 (예: 열, 곱할 수 등)

 

💡 흔히 "행과 열", "단과 곱해지는 수", "줄과 칸" 같은 2중 구조를 처리할 때 사용합니다.

상황 중첩 for문이 필요한 이유
구구단 출력 단(dan)과 곱(su)의 이중 반복 구조
표 형태 출력 행(row)과 열(col)의 반복
별 패턴 만들기 줄 수와 별 개수의 연관 관계 처리
2차원 배열 탐색 배열[행][열] 접근 반복


실습 예제

더보기

실습 예제 ①: 2단~9단 구구단 출력

for (int dan = 2; dan <= 9; dan++) {
    System.out.println("[" + dan + "단]");
    for (int su = 1; su <= 9; su++) {
        System.out.println(dan + " * " + su + " = " + (dan * su));
    }
    System.out.println(); // 각 단 사이 줄 바꿈
}

 

  • dan은 구구단의 단수 (2~9)
  • su는 곱해지는 수 (1~9)
  • dan이 한 번 증가할 때마다 su는 1~9까지 반복됨
출력 일부

 

[2단]
2 * 1 = 2
2 * 2 = 4
...
[3단]
3 * 1 = 3
3 * 2 = 6
...

 

 

 

실습 예제 ②: 별 찍기 - 정사각형 모양

for (int row = 1; row <= 5; row++) {
    for (int col = 1; col <= 5; col++) {
        System.out.print("*");
    }
    System.out.println(); // 줄 바꿈
}

 

출력

*****
*****
*****
*****
*****



 

실습 예제 ③: 별 찍기 - 삼각형 모양

for (int row = 1; row <= 5; row++) {
    for (int col = 1; col <= row; col++) {
        System.out.print("*");
    }
    System.out.println();
}

 

출력

*
**
***
****
*****

 

 

 

 

 

 

 

3. while 문


📌 while문이란?

while문은 조건을 만족하는 동안 계속 반복해서 코드를 실행하는 반복문입니다.
for문과의 가장 큰 차이점은 반복 횟수를 미리 알 수 없을 때도 사용할 수 있다는 점입니다.

 

  • while문은 조건 기반 반복 제어에 매우 유용합니다.
  • 조건이 참일 때만 반복하므로, 조건을 변화시켜야 반복이 종료됩니다.
  • 입력 대기, 무한 루프, 사용자 반복 제어 등 실전에서 자주 사용됩니다.


📌 while문 구조

초기식;

while (조건식) {
    // 반복할 코드
    // 증감식 또는 조건을 변경하는 코드
}

 

 

  • 조건이 true일 동안만 반복
  • 조건이 false가 되면 반복 종료
  • 조건을 변화시키는 코드가 없으면 무한 루프에 빠질 수 있음!

 

 

실습 예제

더보기

실습 예제 ①: 문자열 문자 하나씩 출력

import java.util.Scanner;

public class WhileExample01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("문자열 입력 : ");
        String str = sc.nextLine();

        int index = 0;

        while (index < str.length()) {
            System.out.println(index + "번째 문자 : " + str.charAt(index));
            index++;
        }
    }
}

 

출력

문자열 입력 : hello
0번째 문자 : h
1번째 문자 : e
2번째 문자 : l
3번째 문자 : l
4번째 문자 : o 
 

 

 

 

실습 예제 ②: 별 찍기 - 입력한 수까지의 합

import java.util.Scanner;

public class WhileExample02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("정수를 입력하세요: ");
        int num = sc.nextInt();

        int i = 1;
        int sum = 0;

        while (i <= num) {
            sum += i;
            i++;
        }

        System.out.println("1부터 " + num + "까지의 합은: " + sum);
    }
}

 

출력예시

정수를 입력하세요: 7
1부터 7까지의 합은: 28

 

 

 

 

 

 

 

 

 

 

4. do-while 문


📌 do-while문이란?

조건과 상관없이 블록 안의 코드를 최소 한 번은 실행한 뒤,
조건을 검사하여 반복을 이어갈지 결정하는 반복문입니다.

핵심 포인트 내용
최소 1회 실행 조건과 상관없이 최초 1번은 무조건 실행됨
조건 검사는 나중에 do { } while(조건) 구조
사용 예 사용자 입력, 메뉴 선택, 인증 시도 등
비교 while, for와 달리 실행이 먼저 일어남


📌 do-while문 구조

do {
    // 반복해서 실행할 코드
} while (조건식);
  • do 블록 안의 코드를 먼저 1회 실행
  • while의 조건식을 나중에 검사
  • 조건이 true이면 다시 반복, false이면 종료

 

 

 

 


실습 예제

더보기

실습 예제 ①: exit 입력 전까지 반복 출력 

import java.util.Scanner;

public class DoWhileExample01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input;

        do {
            System.out.print("문자열을 입력하세요 (exit 입력 시 종료): ");
            input = sc.nextLine();
            System.out.println("입력한 값: " + input);
        } while (!input.equals("exit"));

        System.out.println("프로그램을 종료합니다.");
    }
}

 

출력

문자열을 입력하세요 (exit 입력 시 종료): hello
입력한 값: hello
문자열을 입력하세요 (exit 입력 시 종료): test
입력한 값: test
문자열을 입력하세요 (exit 입력 시 종료): exit
입력한 값: exit
프로그램을 종료합니다.

 

 

 

 

실습 예제 ②: 조건 없이 1회 실행되는 반복 확인 

public class DoWhileExample02 {
    public static void main(String[] args) {
        do {
            System.out.println("이 메시지는 조건과 관계 없이 한 번은 출력됩니다.");
        } while (false);

        System.out.println("반복문이 종료되었습니다.");
    }
}

 

출력예시

이 메시지는 조건과 관계 없이 한 번은 출력됩니다.
반복문이 종료되었습니다.

 

 

 

 

 

 

 

 

 

 

마무리
다음 게시글에서는 break, continue, return 에 대해 학습하곘습니다.