Tiny Finger Point Hand With Heart
본문 바로가기
JAVA

[JAVA] 반복문 (while / do-while / for)

by yoondii 2023. 2. 26.
728x90
반응형

조건이 참(true)인 동안 반복수행하기

  • 주어진 조건에 맞는 동안(true) 지정된 수행문을 반복적으로 수행하는 제어문
  • 조건이 맞지 않으면 반복하던 수행을 멈추게 됨
  • 조건은 주로 반복 횟수나 값의 비교의 결과에 따라 true, false 판단 됨

1. while문

  • 수행문을 수행하기 전 조건을 체크하고 그 조건의 결과가 true인 동안 반복 수행
// 1부터 10까지 더하여 그 결과를 출력하기
public static void main(String[] args) {

		int num = 1;
		int sum  = 0;
		
		while(num <= 10) {
			
			sum += num;
			num++;
		}
		
		System.out.println(sum); //55
		System.out.println(num); //11
	}

 

1-1. 무한반복

 while(true){

       .......
   }

2. do-while문

  • 조건과 상관없이 한번은 수행문을 수행한다.
  • while문은 조건을 먼저 체크하고 반복 수행이 된다면, do-while은 조건과 상관 없이 수행을 한 번 하고나서 조건을 체크.
  • 조건이 맞지 않으면(true 가 아니면) 더 이상 수행하지 않음.
public static void main(String[] args) {
    int num = 1; 
    int sum = 0; // int sum;은 안됨 // 0으로초기화 시켜줘야 연산가능


    do {
        sum +=num;
        num++;

    } while(num <= 10 );

    System.out.println(sum); // 55
    System.out.println(num); // 11

3. for 문

  • for반복문은 변수초기화, 조건식, 증감식이 한줄에 모두 있다.
    1. 초기화식은 최초 한 번만 수행합니다.
    2. 조건식을 수행해서 수행결과가 false라면 for 반복문을 빠져 나갑니다.
    3. 수행 결과가 true라면 실행문을 수행한다.
    4. 증감식을 수행한다.
    5. 2번부터 4번까지 반복적으로 수행한다.
//for문을 이용하여 1부터 100까지의 합을 구하는 프로그램
int total = 0; //1부터 100까지 합한 결과값을 담기위한 변수 선언 

for(int i = 1; i <= 100; i++){ //1부터 100까지 반복하기 위한 for 반복문 

    total = total + i; // 1부터 100까지 반복해서 total 변수에 값을 누적  
}
System.out.println(total);  //결과값 출력





//for문을 이용하여 1부터 100까지의 짝수의 합을 구하는 프로그램
public static void main(String[] args) {
        int total = 0;
        for(int i = 1; i <= 100; i++){
            if(i % 2 != 0){  // 2로 나눈 나머지가 0이 아니라는것은 홀수를 의미한다.  
                continue; // 홀수일 경우 total = total + i; 문장이 실행되지 않으므로, 결과적으로 짝수만 더해준다. 
            }
            total = total + i;
        }
        System.out.println(total);
    }

}

 

3-1. 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( ; ; ){
	...
}

4. while vs do-while vs for

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

5. 중첩 반복문

 

  • 반복문 내부에 또 다른 반복문이 있음
  • 여러 겹으로 반복문을 겹쳐서 구현 가능 (단 수행시간에 문제가 발생할 수 있음)
  • 외부 반복문과 내부 반복문 간의 변수 값 변화에 유의 하며 구현하여야 함
public static void main(String[] args) {
    int dan = 2;
    int count = 1;

    for( dan = 2; dan <= 9; dan++) {

        for(count = 1; count <=9; count++) {

            System.out.println( dan + "X" + count + "=" + dan * count);
        }
        System.out.println();
    }

    dan = 2;
    while( dan <= 9 ) {
        count = 1;
        while (count <= 9) {

            System.out.println( dan + "X" + count + "=" + dan * count);
            count++;

        }
        dan++;
        System.out.println();
    }
}
// 2X1=2
// 2X2=4
// 2X3=6
// 2X4=8
// 2X5=10
// 2X6=12
// 2X7=14
// 2X8=16
// 2X9=18
//숫자+1 하면서 구구단 반복

 


6. break 문

 

  • 감싸고 있는 제어문의 블록을 빠져 나오는 기능 (switch문 에서도 사용)
  • 반복문에서는 주로 조건문(if)와 같이 사용하여 조건에 해당되는 경우 반복 수행을 멈추고 반복문 외부로 수행이 이동
  • 여러 반복문이 중첩되어 있는 경우엔 break 문이 포함되어 있는 반복문만 빠져 나옴
//1부터 숫자를 더하여 100이 넘는 순간의 그 숫자와 합을 출력하라.

public static void main(String[] args) {

		int sum = 0;
		int num;
		for( num = 1; ; num++) {
			
			sum += num;
			if( sum >= 100)	break;
		}
		
		System.out.println(sum); // 105
		System.out.println(num); // 14
	}

 


7. continue문

  • 반복문 내부에서 조건문(if)와 같이 사용하며, 조건이 맞는 경우(true 이면) 이후 반복문 블럭 내부의 다른 수행문들을 수행하지 않음
// 1부터 100까지 숫자 중 3의 배수를 출력하라.

int num;
for( num = 1; num <= 100; num++) {

    if( (num % 3) != 0) continue; 

    System.out.println(num);

}
728x90
반응형

댓글