본문 바로가기
Java

자바(Java) 반복문 do while, for 그리고 별찍기

by 임혁진 2024. 10. 22.

반복문: do-while 문과 for 문, 그리고 별찍기 예제

1. do-while

do-while 문은 최소 한 번은 무조건 실행되는 반복문입니다. 이는 일반적인 while 문과 다르게 조건식이 나중에 평가되기 때문입니다. 조건식이 false인 경우에도 한 번은 실행되는 특성이 있습니다.

do-while 문 기본 구조:

int i = 0;
do {
    System.out.println("i is " + i);
    i++;
} while (i < 5);  // 조건식이 마지막에 평가되므로, 최소 한 번은 실행됨

 

  • do 블록 안의 코드는 조건식이 평가되기 전 최소 한 번 실행됩니다.
  • 이후 조건식false가 될 때까지 반복합니다.

2. for

for 문은 반복 횟수가 명확할 때 사용하기 좋습니다. 다른 반복문과 달리, 초기화, 조건식, 증감식이 모두 한곳에 모여 있어 가독성이 높습니다.

for 문 기본 구조:

for (int i = 0; i < 5; i++) {
    System.out.println("i is " + i);
}
  • 초기값: 반복문 시작 시 변수 초기화.
  • 조건식: 반복할지 여부를 결정하는 boolean 식.
  • 증감식: 반복할 때마다 변수 값 변경.

중첩된 for 문:

for 문 안에 또 다른 for 문을 사용하는 중첩반복문을 통해 복잡한 반복 처리가 가능합니다.

for (int i = 0; i < 5; i++) {
    for (int j = 0; j <= i; j++) {
        System.out.print("*");
    }
    System.out.println();
}

위 코드에서 두 개의 for 문을 통해 별을 찍는 패턴을 만듭니다.

3. 3항 연산자 활용

자바의 3항 연산자를 이용하면 간단한 조건문을 줄일 수 있습니다. 주로 변수 값 할당에 사용됩니다.

int max = (a > b) ? a : b;  // a가 b보다 크면 a를, 아니면 b를 할당

 

4. 무한 반복문

while(true) 또는 for 문을 통해 무한 반복을 구현할 수 있으며, 이를 사용하려면 탈출 조건을 반드시 넣어야 합니다.

while (true) {
    System.out.println("무한 반복 중...");
    if (조건) {
        break;  // 조건을 만족하면 반복 종료
    }
}

5. breakcontinue

  • break: 반복문을 즉시 종료.
  • continue: 특정 조건을 만족할 때 해당 반복만 건너뛰고, 다음 반복으로 넘어감.
for (int i = 0; i < 10; i++) {
    if (i % 2 == 0) {
        continue;  // 짝수일 때는 출력하지 않고 건너뜀
    }
    System.out.println(i);  // 홀수만 출력됨
}

6. 별 찍기 예제

별 찍기 1:

for (int i = 0; i < 5; i++) {
    for (int j = 0; j <= i; j++) {
        System.out.print("*");
    }
    System.out.println();
}

출력:

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

별 찍기 2:

for (int i = 0; i < 5; i++) {
    for (int j = 5; j > i; j--) {
        System.out.print("*");
    }
    System.out.println();
}

출력:

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

별 찍기 3 (직각 삼각형):

for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5 - i - 1; j++) {
        System.out.print(" ");  // 공백 출력
    }
    for (int k = 0; k <= i; k++) {
        System.out.print("*");  // 별 출력
    }
    System.out.println();
}

출력:

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

이처럼 for 문을 활용해 다양한 모양을 그릴 수 있으며, 복합적인 제어 흐름을 처리할 수 있습니다.