본문 바로가기

Java

4-1장 제어문 (2) 반복문

1. for 반복 제어문

 

- 실행 구문을 반복적으로 수행하는 반복 제어문

- 반복 횟수가 정해질 때 주로 사용

 

- for문의 구성

 for(초기식 ; 조건식 ; 증감식) {

   실행 구문;  //조건식이 true인 동안 실행

 } 

 

 - 초기식

 : for문이 시작될 때 딱 한번 실행되고 다시는 실행되지 않음. for문안에서만 사용할 변수는 주로 초기식에서 초기화 

 

 - 조건식 

 : 실행 구문으로 들어가기 위한 유일한 출입구로, 이 조건식의 결과가 true가 나오는 동안은 실행구문을 계속 반복 

 : 만일 조건식이 false가 나오면 더 이상 반복을 수행하지 않고 for문을 빠져나감

 

- 증감식

 : for문의 실행 구문이 모두 수행된 후 닫힌 중괄호(})를 만나면 다음 번 반복을 위해 다시 이동하는 위치로 매회 반복이 수행될때 마다 호출

 

- for문에서 조건식이 생략됐을 때(무한 루프)

 for( 초기식 ;     ; 증감식) {

      실행 구문;

  } 

  - 조건식이 생략되면 컴파일러는 자동으로 true 입력 

  - break 키워드를 삽입해 특정 조건을 만족했을 때 무한 루프를 탈출하도록 프로그래밍

 

- break를 이용한 무한 루프 탈출

for(int i=0; ; i++) {
	if(i>10) {
    	break;
    }
    System.out.println(i+" "); //0 1 2 3 4 5 6 7 8 9 10
}

- for 문의 기본 문법 구조, 특수한 형태, 무한 루프에서 탈출하기 

package loopcontrolstatement;

public class loopcontrolstatement_1 {
	public static void main(String[] args) {
		//for문의 기본 문법 구조 
		int a; //for문의 반복 횟수를 지정하는 변수를 외부에서 선언
		for(a=0;a<3;a++) {
			System.out.print(a+"");
		}
		System.out.println();
		
		for(int i=0; i<3 ; i++) { //for문의 반복 횟수를 지정하는 변수를 내부에서 선언
			System.out.print(i+"");
		}
		System.out.println();
		
		for(int i=0;i<100;i++) {
			System.out.print(i+"");
		}
		System.out.println();
		
		for(int i=10; i>0; i--) {
			System.out.print(i+"");
		}
		System.out.println();
		
		for(int i=0; i<10; i+=2) {
			System.out.print(i+"");
		}
		System.out.println();
		
		for(int i=0,j=0; i<10; i++,j++) {
			System.out.print(i+j+"");
		}
		System.out.println();
		
		//무한 루프 탈출
		for(int i=0; ; i++)
		{
			if(i>10) {
				break; //i>10을 만족할 때 무한루프 탈출
			}
			System.out.println(i+"");
		}
		System.out.print("무한 루프 탈출");
	}
}

 

2. While 반복 제어문 

 

 - 소괄호 안의 조건식이 true인 동안 반복 지속

 - 반복횟수를 정하지 않고 특정 조건까지 반복하고자 할 때 주로 사용

 

 - while문 구성

  초기식; 

  while (조건식) { 

      실행구문;

       증감식;

   } 

 

- 초기식은 while문 실행 이전에 정의돼야하고, 증감식은 중괄호 안에 있어야 for문과 동일한 수행을 하게됨 

- while 문의 일반적인 사용 예

 - 자연수를 순서대로 더해 합계가 처음으로 100보다 커지는 때에 숫자와 합계 

int num =0, sum = 0;
while(sum < 100) {
	sum+=num;
    num++;
}
System.out.println((num-1) + "까지의 합=" + sum); //14까지의 합 = 105

 

 - while문과 for문은 언제든지 상호 변환 가능

 - while문과 for문의 상호 변환 예

for(int a=0; a<10; a++) {
	System.out.println(a);
}

int a=0;
while(a<10) {
	System.out.println(a);
    a++;
}

- while문으로 만든 무한 루프 

  while(true) {

      실행 구문;

   }

 

- while문의 기본 문법 구조, for 문으로 변환, 특수한 형태, 무한 루프 탈출

package loopcontrolstatement;

public class loopcontrolstatement_2 {
	public static void main(String[] args) {
		//while문의 기본 문법 구조
		int a=0;
		while(a<10) {
			System.out.print(a+"");
			a++;
		}
		System.out.println();
		
		//for문으로 변환
		for(int i=0; i<10; i++) {
			System.out.print(i+"");
		}
		System.out.println();
		
		int b=10;
		while(b>0) {
			System.out.print(b+"");
			b--;
		}
		System.out.println();
		
		//for문으로 변환
		for(int i=10; i>0; i--) {
			System.out.print(i+"");
		}
		
		//무한 루프 탈출
		int c=0;
		while(true) {
			if(c>10) {
				break; //c>10을 만족할 때 무한 루프 탈출
			}
			System.out.print(c+"");
			c++;
		}
	}
}

 

3. do-while 반복 제어문

 

 - while문과 매우 비슷한 반복 제어문으로, 조건식의 검사와 반복 실행의 순서에서만 차이

 - do-while문의 구성

  초기식; 

  do {

      실행구문;  // 최초 1회는 무조건 실행

      증감식;

  } while(조건식);  //문법 구조상 중괄호가 없으므로 세미콜론(;)로 끝남

 

 - do-while문의 기본 문법 구조, do-while문 vs while문의 비교

package loopcontrolstatement;

public class loopcontrolstatement_3 {
	public static void main(String[] args) {
		//반복 횟수가 0일때 do-while문과 while문 비교 
		int a;
		a=0;
		while(a<0) {
			System.out.print(a+"");
			a++; 
		} //실행 횟수 0번
		System.out.println();
		
		a=0;
		do {
			System.out.print(a+"");
			a++;
		}while(a<0); //실행 횟수 1번
		System.out.println();
		
		//반복횟수가 1일때 do-while문과 while문 비교 
		a=0;
		while(a<1) {
			System.out.print(a+"");
			a++;
		} //실행횟수 1번
		System.out.println();
		
		a=0;
		do {
			System.out.print(a+"");
			a++;
		}while(a<1); //실행 횟수 1번
		System.out.println();
		
		//반복 횟수가 10일 때 do-while 문과 while 문 비교 
		a=0;
		while(a<10) {
			System.out.print(a+"");
			a++;
		} //실행횟수 10번
	    System.out.println();
	    a=0;
		do {
			System.out.print(a+"");
			a++;
		}while(a<10); //실행횟수 10번
		
	}
}

 

4. 제어문의 중복

 

 - 각 제어문 내부에는 또 다른 제어문을 포함할 수 있다

 - 제어문의 중복

package loopcontrolstatement;

public class loopcontrolstatement_4 {
	public static void main(String[] args)
	{
		//if-if 중복
		int value1=5;
		int value2=3;
		if(value1>5) {
			if(value2<2)
			{
				System.out.println("실행1");
			}
			else {
				System.out.println("실행2");
			}
		}
		else {
			System.out.println("실행3");
		}
		System.out.println();
		
		//switch - for 중복
		int value3=2;
		switch(value3) {
		case 1:
			for(int k=0; k<10; k++) {
				System.out.print(k+"");
			}
			break;
		case 2:
			for(int k=10; k>0; k--) {
				System.out.print(k+"");
			}
			break;
		}
		System.out.println();
		System.out.println();
		
		//for - for - if 중복
		for(int i=0; i<3; i++) { //3회 반복
			for(int j=0; j<5; j++) { //5회 반복
				System.out.println(i+""+j);
				if(i==j) {
					System.out.println("i==j");
				}
				
			}
		}
	}
}

'Java' 카테고리의 다른 글

5-1장 배열(1)  (0) 2023.04.22
4-2장 제어 키워드  (0) 2023.04.21
4-1장 제어문 (1) 조건문  (0) 2023.04.21
3-2장 연산자의 연산 방법  (0) 2023.04.19
3-1장 연산자의 종류  (0) 2023.04.19