Programing Language/Java

[Java] 자바의 반복문(Iterate Statement)

vinedpillar 2022. 5. 16. 12:37

for문

  • for문은 특정 조건에 따라 일정 횟수만큼 실행문을 반복하는 기능을 제공합니다.

  • for문의 기본 구조
for( 초기화식; 조건식; 증감식 ) {
	
    조건식이 참일 경우 실행할 명령 코드 블럭;
    (반복 실행되는 영역)
    
}

 

  • for문의 동작 방식
    • 초기화식이 가장 먼저 실행되며, 조건식을 평가하여 true일 경우 실행문을 실행합니다.
    • 실행문이 실행되면 증감식이 실행되고, 다시 조건식을 평가하여 반복 실행 여부를 평가합니다.
    • 만약 증감식 실행 결과로 조건식이 false가 될 경우 for문을 종료하고 블록을 건너뜁니다.
      (처음부터 조건식이 false일 경우 for문은 실행되지 않음)

for문 사용 예시1

// 1부터 100까지 반복하여 더하는 프로그램
// "1부터 100까지의 합은 5,050입니다." 출력
public class SumOneToHundred1 {
    public static void main(String[] args) {
    	int sum = 0;
        for(int i = 1; i <= 100; i++) {
        	sum = sum + i;
        }
        
        System.out.println("1부터 100까지의 합은 " + sum + "입니다.")
    }
}

 

for문 사용 예시2

// 1부터 100까지 합계를 계산하는 프로그램
// "1부터 100까지의 합은 5050입니다" 출력
public class SumOneToHundred2 {
    public static void main(String[] args) {
    	int sum = 0;
        
        // for의 초기화 변수를 for문 밖에서 선언
        int i;
        
        for(i = 1; i <= 100; i++) {
        	sum += i;
        }
        
        // 초기화식에 사용되었던 변수를 for문 밖에서도 사용 가능
        System.out.println("1부터 " + (i - 1) + "까지의 합은 " + sum + "입니다.")
    }
}

 

for문 사용 예시3

// i와 j가 같아질 때까지 1씩 더하고 빼는 프로그램
public class BecomeSameValue {
    public static void main(String[] args) {
	    for(int i = 0, j = 100; i <= 50 && j >= 50; i++, j--) {
		    System.out.println(i + ", " + j);
	    }
        
        // System.out.println(i + ", " + j);
        // for문이 종료되었기 때문에 변수 값이 저장되지 않아 오류 발생
    }
}

 

  • for문의 응용
    • 필요에 따라 초기화식, 조건식, 증감식은 생략되거나 2개 이상 사용될 수 있습니다.
    • 초기화식에 사용되는 변수는 for문 안에서만 유효하며 for문이 종료되면 변수값도 사라집니다.
      (예시2 사례처럼 변수값을 활용하고 싶으면 for문 밖에서 선언하여 활용)
    • for문에서 초기화식은 되도록 정수 타입으로 선언하여 사용하는 것이 좋습니다.
      (실수 타입은 부동소수점 방식을 사용하기 때문에 수치 증감이 정확하지 않음)
    • for문 내에서 또 다른 for문을 사용할 수 있으며, 안쪽의 for문의 반복이 종료되면 밖깥의 for문이 실행됩니다.

for문 중첩 활용 예시

// 구구단을 출력하는 프로그램
public class NestedForStatementsExample {
	public static void main(String[] args) {
 	    for(int i = 2; i <= 9; i++) {
            	System.out.println("------ " + i + "단 ------")
            
            	for(int j = 1; j <= 9; j++) {
                	System.out.println(i + " x " + j + " = " + (i * j));
            } 
        }
    }
}

 

 

 

 

while문

  • while문은 조건식이 true일 경우 실행문을 계속해서 반복하는 기능을 제공합니다.

  • while문의 기본 구조
while( 조건식 ) {

	조건식이 참일 경우 실행할 명령 코드 블럭

}

 

  • while문의 동작 방식
    • while문이 시작될 때 조건식을 평가하고 평가 결과가 true면 실행문이 실행됩니다.
    • 실행문이 모두 실행되면 다시 조건식으로 돌아가 조건식을 평가합니다.
    • 실행문 실행 결과에 따라 조건식이 변경되어 평가 결과가 false가 되면 while문을 빠져나가게 됩니다. 
      (처음부터 조건식이 false일 경우 while문은 실행되지 않음)
    • 조건식에 true를 직접 입력하여 사용할 경우 실행문을 무한히 반복하게 됩니다.
      (이 경우 무한 반복을 빠져나가기 위해서는 실행문에 별도의 코드 필요)

while문 사용 예시1

// 1부터 10까지 출력하는 프로그램
// 1 ~ 10 까지 한 줄씩 출력
public class PrintOntToTen {
	public static void main(String[] args) {
    	int i = 1;
        
        while(i <= 10) {
            System.out.println(i);
            i++;
        }
    }
}

 

while문 사용 예시2

// 1 ~ 4를 출력하는 프로그램
// 1 ~ 4까지 한 줄씩 출력
public class WhileTrue {
	public static void main(String[] args) {
    	int i = 1; 
        boolean run = true;
        
        while(run) {
        	System.out.println(i);
            i++;
            
            // while문을 빠져나가기 위한 코드
            // i가 5가 되면 run 변수가 false로 바뀌면서 while문 종료
            if(i == 5) {
            	run = false;
            }
        }
    }
}

 

 

 

 

do-while문

  • do-while문은 while문과 동일한 작동 방식을 가지고 있지만, 조건식을 판단하기 전에 do{ ... } 코드 블럭이 최초로 한번 실행된다는 점에서 차이가 있습니다.   

  • do-while문의 기본 구조
do {
	
    조건식이 참일 경우 실행되는 명령 코드 블럭;
    (반복되는 영역이며 while과 달리 최초 1회는 반드시 실행)
    
}
while ( 조건식 );

 

  • do-while문의 동작 방식
    • do-while문이 시작될 때 do{ ... } 부분의 실행문을 실행한 뒤에 조건식을 평가합니다.
    • 조건식의 평가 결과가 true면 실행문이 반복 실행되며 이후 while문과 동일하게 동작합니다.
    • (조건식이 false여도 최초 do부분은 실행)
    • while() 뒤에는 반드시 세미콜론(;)을 붙여 구문의 끝을 알려야 합니다.

do-while문 사용 예시

// 1부터 10까지 더하는 프로그램
// "1부터 10까지의 합은 55입니다." 출력
public class DoWhileExample {
	public static void main(String[] args) {
    	int num = 1;
    	int sum = 0;
    
    	do {
    		sum += num;
        	num++;
    	}
    	while (num <= 10);
	
    	System.out.println("1부터 10까지의 합은 " + sum + "입니다.")
    }
}