반복문

김민성·2022년 7월 14일
0

Java

목록 보기
8/47
post-thumbnail

반복문

1. for 문

  • for문의 구조

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

    ​ 반복해서 수행할 문장

    }

    초기식 : 새로운 변수의 선언 (for문 내부에서 사용 가능)

    조건식 : 조건식이 참인 경우에 반복을 계속하며, for문을 반복 할때마다 항상 조건식 검사한다.

    증감식 : 변수의 값을 증가 혹은 감소시키는 식

    public class Main {
    	public static void main(String[] args) {
            // 1부터 10까지의 합
    		int sum = 0;	// 합을 저장할 sum 변수를 0으로 초기화한다.
    		
    		for(int i = 1; i<=10; i++) {
    			sum += i;			// i를 1부터 10까지 반복하며 sum에 누적저장한다.
    		}
    		System.out.println(sum);	// 55 출력
    	}
    }

2. 향상된 for문

  • 향상된 for문의 구조

    for( 타입변수명 : 배열 또는 컬렉션){

    ​ 반복해서 수행할 문장

    }

    여기서 타입변수명은 배열 또는 컬렉션의 요소의 타입이어야 한다.

    변수가 배열이나 컬렉션 안에 있는 요소들을 전부 가져오면서 반복한다.

    public class Main {
    	public static void main(String[] args) {
    		int arr[] = {1,2,3,4,5,6,7,8,9,10};		// 1부터 10까지의 요소를 가진 배열 arr 생성
    		int sum = 0;	// 합을 저장할 sum 변수 0으로 초기화
    		
    		for(int i : arr ) {
    			sum += i;			// 배열에 있는 요소들을 하나씩 읽어와서 sum에 누적 저장
    		}
    		System.out.println(sum);	// 55 출력
    	}
    }

for문과 향상된 for문의 비교

  • for문과 향상된 for문 둘다 반복횟수가 '특정된' 경우에 사용하는데, 여기서 '특정된'이란 10번 반복하는것 처럼 횟수가 정해져있다는 의미가 아니다. 예를 들어 책장에 책이 몇권 있는지는 모르지만 모든 책을 꺼내오면서 반복하는것 처럼 특정되어 있다는 것이다.
  • 몇번째 어떤 값이 있는지 알고싶을 때, 즉 순서가 중요한 경우에는 기존의 for문을 이용하고 단순하게 전체 순회를 하며 반복할 때는 향상된 for문을 사용하는 것이 좋다.

3. while문

  • while문의 구조

    while(조건식) {

    ​ 조건식이 참일 때 반복할 문장

    }

    public class Main {
    	public static void main(String[] args) {
    		int i = 0;		// 변수 i를 0으로 초기화
    		int sum = 0;	// 합을 저장할 sum을 0으로 초기화
    		
    		while(i<=10) {	// i가 10 이하일때만 반복문 수행
    			sum += i;	// sum 변수에 i 저장
    			i++;		
    		}
    		System.out.println(sum);	// 55 출력
    	}
    }
  • while문의 조건식은 생략이 불가능하고, 조건식에 true 자체를 넣어서 무한으로 반복하게 만들 수 있다.

4. do-whlie문

  • do-while문의 구조

    do{

    ​ 조건식의 연산결과가 참일 때 반복할 문장

    } while(조건식);

  • while문과 순서가 반대로 되어있어 첫번째 반복 수행시 조건식보다 실행할 문장을 먼저 만난다. 따라서 최초 한번은 무조건 do 블럭 안에 문장이 실행된다.

    public class Main {
    	public static void main(String[] args) {
    		int i = 5;	// int타입의 변수 i를 5로 초기화
    		
    		do {
    			System.out.println(i+5);
    		}while(i<5);
            	// do안에 문장을 처음 한번 실행한 후 조건이 false라는것이 판별되므로
            	// 10이 한번 출력된다.
    		
    		while(i<5) {
    			System.out.println(i+5);
    		}
            	// 조건식이 false라는것이 먼저 판별되므로 아무것도 출력되지 않는다.
    	}
    }

break, continue

  • break : 자신이 포함된 가장 가까운 반복문을 종료한다.

  • continue : 반복문의 끝으로 이동해 다음 반복을 계속 수행한다.

    public class Main {
    	public static void main(String[] args) {
    		int i = 0;
    				
    		while(true) {				// 조건식에 true를 넣어 무한반복
    			i++;
    			if(i%2 == 0) {			// i가 짝수일때 continue
    				continue;
    			}
    			if(i>10) {				// i가 10보다 클때 break
    				break;
    			}
    			System.out.println(i);	// 1 3 5 7 9 출력
    		}
    	}
    }

    위의 식은 i를 1씩 증가시키며 반복을 수행한다. 그런데 i%2 == 0 일때 즉, i가 짝수일때는 continue를 붙여 i가 짝수일때는 그 아래의 문장을 실행하지 않고 새로 반복을 시작하는 것이다. 따라서 System.out.println(i); 문장을 만나지 않아 짝수는 출력되지 않는 것이다.

    여기서 주의할 점은 while(true) 같이 무한루프를 만들었을 때는 if(i>10){break;} 처럼 반복문을 종료할 수 있는 조건을 가진 break 문을 꼭 써줘야 한다는 것이다.

이름 붙은 반복문

  • break 문은 가장 근접한 반복문을 멈춘다고 했는데, 다중 반복문에서 다른 반복문을 멈추고 싶다면 반복문에 이름을 붙여서 지정할 수 있다.

    public class Main {
    	public static void main(String[] args) {
    	
    		loop1 : for (int i = 0; i < 5; i++) {
    			for (int j = 0; j < 5; j++) {
    				System.out.println("i = "+ i + " j = " + j);
    				if(j==4) {
    					break loop1;
    				}
    			}
    		}
    	}
    }
    // 결과
    // i = 0 j = 0
    // i = 0 j = 1
    // i = 0 j = 2
    // i = 0 j = 3
    // i = 0 j = 4

    위의 식에서 바깥쪽 for문에 loop1이라는 이름을 붙였다. 그리고 이중 for문을 돌면서 j가 4일때 loop1을 종료하게 만들었다. 먼저 i =0일대 j가 포함된 for문을 돌기 시작할 것이고 j가 4가 되었을때 반복문이 종료될 것이므로 결과가 위와 같이 나올 것이다.

0개의 댓글