본문 바로가기

코딩 공부/Java

[Java] 07_반복문

반복문

주어진 조건이 참을 충족하는 동안 블록 안의 실행문을 반복해서 수행하는 문법.

#01. while문 (보통)

1) 기본 구문 형식

주어진 조건식이 참인 동안 블록 안을 반복적으로 수행한다.

    while (조건) {
        ... 반복적으로 수행할 구문 ...
    }

2) 반복문의 조건이 성립하기 위한 구성

초기식;                        // (1) 조건식을 판별하기 위한 기준값을 생성한다.

while (조건식) {                // (2) (5) 조건을 판별한다.
    ... 반복적으로 동작할 구문 ...    // (3) 명령을 수행한다.
    증감식;                            // (4) 기분값에 변화를 주고 다시 조건식으로 이동한다.
    }

While1.java 예제

public class While1 {
    public static void main(String[] args) {
        // 초기식
        int x = 0;

        // 조건식 -> x가 10보다 작은 동안 반복수행
        while (x < 10) {
            // 반복이 진행되는 동안 수행할 명령
            // --> 여기서는 x의 변화 과정을 출력한다.
            System.out.printf("x=%d\n" , x);

            // 증감식 -> 조건에 사용되는 값을 변경
            x++;
        }

        System.out.println("----------------------------");
        System.out.printf("x의 최종값: %d\n", x);
    }
}

While2.java 예제

import java.util.Scanner;

public class While2 {
    public static void main(String[] args) {
        // 총합을 구하기 위해서는 값을 누적 합산할 변수를 0으로 초기화 하고 시작해야 한다.
        int sum = 0;

        //초기식
        int i = 1;

        while( i < 11) {
            // sum에 i의 값이 1부터 10까지 변하는 동안 누적합산 한다.
            sum += i;

            // 중간과정 출력
            System.out.printf("i=%d, sum=%d\n", i, sum);

            // i값을 1씩 증가한다.
            i++;
        }
    }
}

While3.javaㅇ 예제

import java.util.Scanner;

public class While3 {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int i = 1;        // 차례대로 곱해져갈 수 i를 1부터 시작하게 설정

        System.out.print("숫자를 입력하세요(2~9): ");
        int num = reader.nextInt();

        while(i < 10) {
            System.out.printf("%d x %d = %d\n", num, i, num*i);
            i++;
        }    // 반복문을 돌려 차례대로 곱셈을 해주고 증감연산자로 i를 9까지 돌려준다
    }
}
출력결과
숫자를 입력하세요(2~9): 7
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63

While4.java 예제

import java.util.Scanner;

public class While4{
    public static void main(String[] args) {
        Scanner read = new Scanner(System.in);

        System.out.print("x의 값을 입력하세요: ");
        int x = read.nextInt();
        System.out.print("y의 값을 입력하세요: ");
        int y = read.nextInt();

        int sum = 0;

        while(x<=y){
            sum += x;
            x++;
        }
        System.out.printf("x부터 y의 총합은 %d\n", sum);
    }
}
출력결과
x의 값을 입력하세요: 1
y의 값을 입력하세요: 10
x부터 y의 총합은 55

#02. do-while문 (안중요)

while문은 조건의 성립 여부에 반복 수행을 결정하므로 만약 조건이 처음부터 거짓이라면 한번도 수행하지 않는다.

    int a= 10;

    while(a < 10) {
        // 이블록은 한번도 실행되지 않는다.

}

do-while문은 선실행, 후판별 형태로 구성된다.

일단 {} 안의 구문을 1회 실행하고 나서 조건을 판별하여 계속 수행할지 여부를 판단한다.

    int i = 0;

    do {
        /* ... 반복 실행될 구문 ... */
        i++;                // 증감식
    } while ( i < 10);         // 조건식

만약 아래와 같이 조건이 거짓이더라도 우선 한번은 실행한 후 조건을 판별하기 때문에 do-while문은 최소 한 번은 실행한다.

    int a = 10;

    do {
        // 이 블록은 한 번만 실행된다.
    } while ( a < 10);

개인적으로 한 번도 사용해 보지 않았습니다. do-while문이 존재하지 않는 언어도 많습니다.

#03. for문 (매우 중요)

초기식, 조건식, 증감식을 하나의 괄호안에 모두 명시하는 형태. while이나 do-while보다 반복에 필요한 요건을 한 눈에 파악할 수 있긱 때문에 훨씬 간결하다.

    for (초기식; 조건식; 증감식) {
        /* 반복 실행할 구문 */
    }

For1.java

0부터 10보다 작은 동안 1씩 증가하는 변수값의 변화과정 확인하는 예제

public class For1 {
    public static void main(String[] args) {
        for (int i=0; i < 10; i++) {
            System.out.printf("i=%d\n", i);
        }
    }
}
출력결과
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9

For2.java

1부터 10까지의 총 합을 구하는 프로그램

    public class For2 {
        public static void main(String[] args) {
            // 총합을 구하기 위해서는 갑승ㄹ 누적 합산할 변수를 0으로 초기화 하고 시작해야 한다.
            int sum = 0;

            for (int i = 1; i < 11; i++) {
                //sum에 i의 값이 1부터 10까지 변하는 동안 누적합산 한다.
                sum += i;
                // 중간과정 출력
                System.out.printf("i=%d, sum=%d\n", i, sum);
            }
        }
    }
출력결과

i=1, sum=1
i=2, sum=3
i=3, sum=6
i=4, sum=10
i=5, sum=15
i=6, sum=21
i=7, sum=28
i=8, sum=36
i=9, sum=45
i=10, sum=55

For3.java

    public class For3 {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int i = 1;

        System.out.print("숫자를 입력하세요(2~9): ");
        int num = reader.nextInt();

        for(i=1; i < 10; i++) {
            System.out.printf("%d x %d = %d\n", num, i, num*i);
        }
    }
}
출력결과
숫자를 입력하세요(2~9): 4
4 x 1 = 4
4 x 2 = 8
4 x 3 = 12
4 x 4 = 16
4 x 5 = 20
4 x 6 = 24
4 x 7 = 28
4 x 8 = 32
4 x 9 = 36

For4.java

    public class For4{
    public static void main(String[] args) {
        Scanner read = new Scanner(System.in);

        System.out.print("x의 값을 입력하세요: ");
        int x = read.nextInt();
        System.out.print("y의 값을 입력하세요: ");
        int y = read.nextInt();
        int z = x;
        int sum = 0;

        for(x=x; x<=y; x++){
            System.out.printf("%d + %d\n", sum, x);
            sum += x;
        }
        System.out.printf("%d부터 %d의 총합은 %d\n", z, y,sum);
    }
}
출력결과
x의 값을 입력하세요: 1
y의 값을 입력하세요: 10
0 + 1
1 + 2
3 + 3
6 + 4
10 + 5
15 + 6
21 + 7
28 + 8
36 + 9
45 + 10
1부터 10의 총합은 55

'코딩 공부 > Java' 카테고리의 다른 글

[Java] 09_형변환  (0) 2020.05.08
[Java] 08_기본문법활용  (0) 2020.05.08
[Java] 06_조건문  (0) 2020.05.08
[Java] 05_기본입출력  (0) 2020.05.08
[Java] 04_연산자  (0) 2020.05.08