김코딩

자바 - 반복문 본문

Java

자바 - 반복문

김코딩딩 2025. 1. 31. 14:14

반복문

반복문은 이름 그대로 특정 코드를 반복해서 실행할 때 사용한다.

자바는 다음 3가지 종류의 반복문을 제공한다.

  • while
  • do-while
  • for

while문

  • 조건식을 확인한다. 참이면 코드 블럭을 실행하고, 거짓이면 while문을 벗어난다.
  • 조건식이 참이면 코드 블럭을 실행한다. 이후에 코드 블럭이 끝나면 다시 조건식 검사로 돌아가서 조건식을 검사 한다.(무한 반복)

예제1

문제: while문을 사용해서 1을 한 번씩 더해서 총 3번 더하는 코드를 만들어보자

package loop;

public class While1_2 {

    public static void main(String[] args) {
        int count = 0;

        while(count<3){
            count++;
            System.out.println("현재 숫자는 : " + count);
        }
    }
}

출력

설명:

while (count < 3) 에서 코드 블럭을 반복 실행한다. 여기서 count 의 값이 1 , 2 , 3 으로 점점 커지다가 결국 count < 3 이 거짓이 되면서 while 문을 빠져나간다. while(count < 3) 에 있는 숫자를 while(count < 100) 으로 변경하면 while 문의 코드 블럭을 100번 반 복한다.

 

예제2

문제: 1부터 하나씩 증가하는 수를 3번 더해라 (1 ~ 3 더하기)

package loop;

public class while2_2 {
    public static void main(String[] args) {
        int sum = 0;
        int i = 1;
        int endNum = 3;
        while (i <= endNum) {
            sum += i;
            System.out.println("i = " + i + " sum=" + sum);
            i++;
        }
    }
}

출력

설명 :

반복 횟수 정하기 i 가 endNum 이 될때 까지 반복해서 코드를 실행하면 된다.

  • i=1 , endNum=3 이라면 3번 반복하면 된다.
  • i=1 -> 2 -> 3 i=3 , endNum=4 라면 2번 반복하면 된다. i=3 -> 4

while문 작성하기

  • while 문에서 i <= endNum 조건을 통해 i 가 endNum 이 될 때 까지 코드 블럭을 실행한다.
  • i 가 endNum 보다 크면 while 문을 종료한다.

 

do-while문

  • do-while 문은 while 문과 비슷하지만, 조건에 상관없이 무조건 한 번은 코드를 실행한다
package loop;

public class DoWhile2 {
    public static void main(String[] args) {
        int i = 10;
        do {
            System.out.println("현재 숫자는:" + i);
            i++;
        } while (i < 3);
    }
}

출력

 

설명:

do-while 문은 최초 한번은 항상 실행된다. 따라서 먼저 현재 숫자는:10 이 출력된다. 코드 블럭을 실행 후에 조건식을 검증하는데, i=11 이기 때문에 while (i < 3) 조건식은 거짓이 된다. 따라서 do-while 문을 빠져나온다.

do-while 문은 최초 한번은 코드 블럭을 꼭 실행해야 하는 경우에 사용하면 된다.

break, continue

break 와 continue 는 반복문에서 사용할 수 있는 키워드다.

break 는 반복문을 즉시 종료하고 나간다.

continue 는 반복문의 나머지 부분을 건너뛰고 다음 반복으로 진행하는 데 사용된다.

참고로 while , do-while , for 와 같은 모든 반복문에서 사용할 수 있다.

 

 

 

예제1

문제: 1부터 시작해서 숫자를 계속 누적해서 더하다가 합계가 10보다 처음으로 큰 값은 얼마인가?

package loop;

public class Break1 {
    public static void main(String[] args) {
        int sum = 0;
        int i = 1;
        while (true) {
            sum += i;
            if (sum > 10) {
                System.out.println("합이 10보다 크면 종료: i=" + i + " sum=" + sum);
                break;
            }
            i++;
        }
    }
}

출력

설명:

  • 조건식을 잘 보면 true 라고 되어있다. 조건이 항상 참이기 때문에 이렇게 두면 while 문은 무한 반복된다. 물 론 break 문이 있기 때문에 중간에 빠져나올 수 있다.
  • 만약 sum > 10 조건을 만족하면 결과를 출력하고, break 를 사용해서 while 문을 빠져나간다.

예제2

문제: 1부터 5까지 숫자를 출력하는데, 숫자가 3일 때는 출력을 건너뛰어야 한다

package loop;

public class Continue1 {
    public static void main(String[] args) {
        int i = 1;
        while (i <= 5) {
            if (i == 3) {
                i++;
                continue;
            }
            System.out.println(i);
            i++;
        }
    }
}

출력

설명:

i==3 인 경우 i 를 하나 증가하고 continue 를 실행한다. 따라서 이 경우에는 i 를 출력하지 않고 바로 while (i <= 5) 조건식으로 이동한다.

 

for 문1

for문도 while문과 같은 반복문이고, 코드를 반복 실행하는 역할을 한다. for문은 주로 반복 횟수가 정해져 있을 때 사 용한다.

for문은 다음 순서대로 실행된다.

  1. 초기식이 실행된다. 주로 반복 횟수와 관련된 변수를 선언하고 초기화 할 때 사용한다. 초기식은 딱 1번 사 용된다. 
  2. 조건식을 검증한다. 참이면 코드를 실행하고, 거짓이면 for문을 빠져나간다.
  3. 코드를 실행한다.
  4. 코드가 종료되면 증감식을 실행한다. 주로 초기식에 넣은 반복 횟수와 관련된 변수의 값을 증가할 때 사용한 다.
  5. 다시 2. 조건식 부터 시작한다. (무한 반복)

예제1

문제: i부터 하나씩 증가하는 수를 endNum(마지막 수)까지 더해라 (i ~ endNum 더하기)

package loop;

public class For2 {
    public static void main(String[] args) {
        int sum = 0;
        int endNum = 3;

        for (int i = 1; i <= endNum; i++) {
            sum = sum + i;
            System.out.println("i=" + i + " sum=" + sum);
        }
    }
}

 

출력

설명 : 덧셈의 합을 넣기 위한 sum을 0으로 초기화시켜서 선언한 후, endNum으로 몇번을 반복할 것인지 정하면 된다.

for 문의 조건문을 확인하면 int i = 1부터 시작해서 i <= endnNum; 까지 반복하는거니까 i = 1,2,3 세번 반복하게 된다.

 

for 문2

for문에서 초기식, 조건식, 증감식은 선택이다. 다음과 같이 모두 생략해도 된다. 단 생략해도 각 영역을 구분하는 세미 콜론( ; )은 유지해야 한다

이렇게 하면 조건이 없기 때문에 무한 반복하는 코드가 된다. 따라서 다음과 같은 코드가 된다.

 

예제1

문제: 1부터 시작하여 숫자를 계속 누적해서 더하다가 합계가 10보다 큰 처음 값은 얼마인가?

package loop;

public class Break2 {
    public static void main(String[] args) {
        int sum = 0;
        int i = 1;
        for (; ; ) {
            sum += i;
            if (sum > 10) {
                System.out.println("합이 10보다 크면 종료: i=" + i + " sum=" + sum);
                break;
            }
            i++;
        }
    }
}

출력

설명:

  • for (; ; ) 를 보면 조건식이 없다. for문은 조건이 없으면 무한 반복한다.
  • sum > 10 조건을 만족하면 break 를 사용해서 for문을 빠져나간다.

중첩반복문

반복문은 내부에 또 반복문을 만들 수 있다. for , while 모두 가능하다

package loop;

public class Nested1 {
    public static void main(String[] args) {
        for (int i = 0; i < 2; i++) {
            System.out.println("외부 for 시작 i:" + i);
            for (int j = 0; j < 3; j++) {
                System.out.println("-> 내부 for " + i + "-" + j);
            }
            System.out.println("외부 for 종료 i:" + i);
            System.out.println();
        }
    }
}

출력

설명:

외부 for는 2번, 내부 for는 3번 실행된다. 그런데 외부 for 1번당 내부 for가 3번 실행되기 때문에 외부(2) * 내부(3) 해서 총 6번의 내부 for 코드가 수행된다.

'Java' 카테고리의 다른 글

자바 - 다형성1  (0) 2025.04.01
자바 - 메서드  (0) 2025.02.26
자바 - Scanner  (1) 2024.04.25
자바 - 형변환  (0) 2024.04.25