☕️ 반복문

팔리동·2021년 8월 18일
0
post-thumbnail

while문

  • 주어진 조건에 맞는동안(true) 지정된 수행문을 "반복적"으로 수행하는 제어문
while(조건식){
	수행문 1 -> 조건식이 참인 동안 수행문1 반복 실행 
}

예제 1부터 10까지 더하기

public class WhileTest {

    public static void main(String[] args) {

        int num = 1;
        int sum = 0;

        while( num <= 10){
            sum += num;
            num++;
        }
        System.out.println(sum);
        System.out.println(num);
        // 결과 : 55
        // 결과 : 11
    }
}

do-while문

  • while문은 조건을 '먼저'체크하고 반복 수행이 된다면, do-while은 조건과 상관 없이 수행을 한 번 하고나서 조건을 체크
public class DoWhileTest {

    public static void main(String args[]){

        Scanner scanner = new Scanner(System.in);
        int input;
        int sum = 0;
        do{
            input = scanner.nextInt();
            sum += input;
        }while(input != 0);

        System.out.println(sum);
    }
}
  • 입력으로 받은 숫자를 sum변수에 대입저장하고 입력받은 숫자가 0이면 출력
    0이 아니면 다시 입력을 받는다.

for문

public class DoWhileTest {

    public static void main(String args[]){

        Scanner scanner = new Scanner(System.in);
        int input;
        int sum = 0;
        do{
            input = scanner.nextInt();
            sum += input;
        }while(input != 0);

        System.out.println(sum);
        // 결과: 55
    }
}
  • 각 반복문의 사용 용도
while문do-while문for문
수행조건이 참인 동안 반복수행 조건이 맞지 않으면 수행되는 부분 없음조건이 참인 동안 반복수행 수행문을 먼저 수행하고 조건 체크초기화, 조건체크, 증감 순으로 수행
쓰임조건식의 결과나 변수가 true, false값인 경우 주로 사용조건식의 결과나 변수가 true, false값인 경우 주로 사용특정수의 범위, 횟수와 관련하여 반복되는 경우 주로 사용 배열과 함께 많이 사용됨

for문의 문장들은 생략가능하다.

  • 초기화식 생략: 이미 이전에 값이 초기화 되어 for 내부에서 값을 지정할 필요가 없는 경우
int i = 0;
for(; i<5 ; i++){
    수행문   //  초기화식 생략 
}
  • 조건식 생략: 반복 수행에 대한 조건이 수행문에 내부에 있는 경우
for(i=0 ; ; i ++){
    sum += i;
    if(sum > 200) break;      // 조건식 생략 
}
  • 증감식 생략: 증감식에 대한 연산이 복잡하거나 다른 변수의 연산 결과값에 결정되는 경우
for(i = 0 ; i < 5 ; ){
    i = (++i) % 10;    // 증감식 생략
}
  • 무한 반복
for( ; ; ){
	// 무한 반복 	
}

중첩 반복문

중첩 반복문이란?

  • 반복문 내부에 또 다른 반복문이 있음
  • 여러 겹으로 반복문을 겹쳐서 구현 가능 (단 수행시간에 문제가 발생할 수 있음)
  • 외부 반복문과 내부 반복문 간의 변수 값 변화에 유의 하면 구현해야 함

예제 구구단을 for문과 while 문으로 구현하기

public class NestedLoopTest {

    public static void main(String[] args){
        int dan = 2;
        int count = 1;
        for(dan = 2; dan < 10; dan++){
            for(count = 1; count < 10 ; count++){
                System.out.println(dan + "*" + count + "=" + dan*count);
            }
        }
        System.out.println("*************************");
        dan = 2;
        count = 1;
        while(dan < 10){
            while(count < 10){
                System.out.println(dan + "*" + count + "=" + dan*count);
                count++;
            }
            dan++;
            count = 1;
        }
    }
}

continue & break

continue

  • 반복문 내부에서 조건문(if)와 같이 사용하며, 조건이 맞는 경우(true)이면 이후 반복문 블럭 내부의 수행문들을 수행하지 않음

break

  • 감싸고 있는 제어문의 블록을 빠져 나오는 기능(switch문 에서도 사용)
  • 반복문에서는 주로 조건문(if)와 같이 사용하여 조건에 해당하는 경우 반복 수행을 멈추고 반복문 외부로 수행이 이동
  • 여러 반복문이 중첩되어 있는 경우엔 break문이 포함되어 있는 반복문만 빠져 나옴

예제

public class ContinueBreakTest {

    public static void main(String args[]){
        int i = 0;
        int num;
        for(num = 1 ; ; num++){
            i += num;
            if(i >=100) break;
        }
        System.out.println(i);
        System.out.println(num);
        int number;
        for(number=1 ; number <= 100 ; number++){
            if (number % 3 != 0) continue;
            System.out.println(number);
        }
    }
}
profile
배움의 기록

0개의 댓글