내일배움캠프/TIL

JAVA 입문 _ 김영한의 자바 입문 강의 - Day 6[반복문1]

austindynasty 2024. 10. 21. 23:01

1. 반복문 : 특정 코드를 반복해서 실행할 때 사용

1) While문 1 [ while (조건식 ] 

- 조건문을 확인한 후 참이면 코드 블럭을 반복 실행하고, 거짓이면 while문을 빠져나간다. 

public class While1_1 {
    public static void main(String[] args) {

        int count = 0;

        while ( count <27 ) {
            count++;
            System.out.println("현재 숫자는 : " + count );
        }
    }
}
public class While1_1 {
    public static void main(String[] args) {

        int count = 25;

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

-> while ( count < 27 ) 이 참이므로 코드 블럭을 반복실행한다. 값이 점점 증가하다가 count < 27이 거짓이 되면 while문을 빠져나간다. 

 

2) While문 2 

 

예제) i부터 하나씩 증가하는 수를 endNum(마지막 수)까지 더하세요. 

public class While2_1 {
    public static void main(String[] args) {

        int sum = 0;
        int i = 1;
        int endNum = 3;

        while ( i <= endNum ) { // i가 endNum보다 작을 때까지 
            sum = sum + i; // 
            System.out.println("i= " + i + " sum= " + sum);
            i++; //i는 하나씩 증가한다. 
        }
    }
}

 

3) do-while문 : 조건에 상관없이 무조건 한 번은 코드를 실행 

public class DoWhile1_1 {
    public static void main(String[] args) {
        int i = 8;

        do {
            System.out.println("i = " + i );
            i++;
        } while ( i < 3 );
    }
}

-> i는 8이므로 이미 조건은 거짓이다. 하지만 do문 안에 코드를 작성하면 참과 거짓에 상관없이 무조건 한 번은 실행된다.

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

 

4) break, continue문 : 반복문에서 사용할 수 있는 키워드

- break : break를 만나면 코드가 더 있어도 실행되지 않고 while문이 종료된다.

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

public class Break1 {
    public static void main(String[] args) {
        int sum = 0;
        int i = 1;

        while (true) { //항상 참인 무한 반복 조건문
            sum = sum + i; // i++를 실행한 후 해당 코드로 온다.
            if ( sum > 10 ) { //if문이 참이될 때 코드가 실행, break문을 통해 빠져나온다.
                System.out.println("합이 10보다 크면 종료 : i=" + i + " sum=" + sum);
                break;
            }
            i++; //if문이 거짓일 때 while문을 바로 빠져나와 i++가 실행된다.
        }
    }
}

 

- continue : continue를 만나면 다음 코드가 실행되지 않고 다시 조건식으로 이동, 조건식이 참이면 while문을 실행한다. 

예제) 1부터 5까지 숫자를 출력하는데, 숫자가 3일 때는 출력을 건너뛰는 프로그램을 작성하세요.

public class Continue {
    public static void main(String[] args) {

        int i = 1;

        while (i <= 5) {
            if ( i == 3 ) {
                i++;
                continue;//i가 3이 되면 if문이 참이 된다.그리고 continue를 만나 다시 조건식으로 돌아가 출력이 안된다.
            }
            System.out.println(i);
            i++;
        }
    }
}

 

5) for문 : 주로 반복 횟수가 정해져 있을 때 사용 

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

1부터 10까지 출력되는 for문을 작성했을 때,

1. 초기식이 실행된다. int i = 10 [ 주로 반복 횟수와 관련된 변수를 선언하고 초기화할 때 사용한다. 초기식은 한 번만 사용된다] 

2. 조건식을 검증한다. i <= 10 [참이면 코드를 실행하고, 거짓이면 for문을 빠져나간다.]

3. 조건식이 참이면 코드를 실행한다. Syetem.out.println(i); 

4. 코드가 종료되면 증감식을 다시 실행한다. i++ [주로 초기식에 넣은 반복 횟수와 관련된 변수의 값을 증가시킬 때 사용한다. ]

5. 다시 2.조건식을 검증한다. (무한 반복) 이후 i <= 10 조건이 거짓이 되면 for문을 빠져나간다. 

 

예제1) i부터 하나씩 증가하는 수를 endNum(마지막 수)까지 더하세요.

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);
        }
    }
}

- for문은 초기화, 조건 검사, 반복 후 작업 등이 규칙적으로 한 줄에 모두 들어있어 코드를 이해하기 용이하다.

for ( ; ; ) {
	//코드
}

- 위처럼 초기식, 조건식, 증감식은 선택으로 모두 생략해도 된다. 하지만 각 영역을 구분하는 세미콜론은 유지해야 한다.

조건이 없는 경우에는 무한 반복되는 코드가 된다.

 

예제2) 1부터 시작해 숫자를 누적해서 더하다가 합계가 10보다 큰 처음 값은 얼마인지 구하세요. 

public class For3 {
    public static void main(String[] args) {

        int sum = 0;
        int i = 1;

        for (; ; ) { //초기식이나 조건식이 생략된 상태로, 무한 반복된다. 
            sum += i;
            if (sum > 10) { //if문의 조건 sum > 10을 만족하면 break를 사용해 for문을 빠져나간다.
                System.out.println("i = " + i + " sum = " + sum);
                break; 
            }
            i++; //실행결과 i = 5 sum = 15
        }
    }
}

-> 위 코드를 보면 어떤 값이 반복해서 사용되는 증가 값인지 직관적으로 확인하기가 어렵다. 

public class For4 {
    public static void main(String[] args) {

        int sum = 0;

        for (int i = 1; ;i++ ) {
            sum += i;
            if (sum > 10) {
                System.out.println("i = " + i + " sum = " + sum);
                break;
            }
        }
    }
}

-> 이러한 형태로 코드를 수정하면 for문만 보고도 i가 증가하는 값이라는 것을 바로 알 수 있다. 

- 카운터 변수가 명확하거나 반복 횟수가 정해진 경우에는 for문을 사용하는 것이 직관적이고 유지보수하기에도 좋다.