for 구문

for 반복문

이 문서에서는 for 반복문을 다루는 방법에 대해서 살펴본다.

for 반복문은 특정 횟수나 특정 구간 내에서 지속적으로 내부 구문을 실행하도록 만들어진 제어문의 형태이다.

형태

for(선언부; 조건부; 증감부){
    실행코드
}
  • 선언부 : 구문 내에서 사용할 변수를 선언하는 영역

  • 조건부 : 구문이 실행되기 위한 조건을 정의하는 영역

  • 증감부 : 변수의 증가 혹은 감소를 처리하는 영역

실행 순서

  1. 선언부에서 변수 생성

  2. 조건부 검사 (거짓일 경우 종료)

  3. 내부 구문 실행

  4. 증감부 실행

  5. 2번으로 이동

데모 1 : while 구문과의 비교

for와 while 구문으로 각각 1부터 10까지 화면에 출력하는 예제를 만들어보면 다음과 같다.

import java.lang.*;

public class ForExample01 {
    public static void main(String[] args){
        
        //[1] while 구문을 이용하여 1부터 10까지 출력
        int n = 1;
        while(n <= 10){
            System.out.println("n = " + n);
            n++;
        }
        
        //[2] for 구문을 이용하여 1부터 10까지 출력
        for(int i = 1; i <= 10; i++){
            System.out.println("i = " + i);
        }
        
    }
}

위의 예제에서 n과 i는 같은 값으로 출력되므로 같은 결과를 가져오는 구문임을 확인할 수 있다. 차이점은 while과 다르게 for는 각각의 자리가 지정되어 있어 구문을 작성함에 있어 오류를 줄일 수 있다는 점이다.

데모 2 : 증감 조절

import java.lang.*;

public class ForExample02 {
    public static void main(String[] args){
        
        for(int i=1; i <= 10; i++){
            System.out.println("첫 번째 : " + i);
        }        
        
        for(int i=1; i <= 10; i+=2){
            System.out.println("두 번째 : " + i);
        }
        
        for(int i=1; i <= 10; i+=5){
            System.out.println("세 번째 : " + i);
        }
        
    }
}

데모 3 : 감소하는 반복문

import java.lang.*;

public class ForExample03{
    public static void main(String[] args){
        
        System.out.println("카운트다운");
        for(int i=10; i>=0; i--){
            System.out.println(i);
        }
        
    }
}

10부터 0까지 화면에 출력하는 카운트다운 프로그램이다. 숫자가 감소하는 반복문에서는 조건을 설정할 때 기존처럼 이하, 미만이 아닌 이상, 초과로 설정해야 한다. 만약 다음과 같이 설정한다면 시작부터 조건이 거짓이기 때문에 반복은 한 번도 실행되지 않는다.

for(int i=10; i<=0; i--){ }

데모 4 : 반복문과 조건문

import java.lang.*;

public class ForExample04{
    public static void main(String[] args){
    
        System.out.println("1부터 10까지 홀수 출력");  
        for(int i=1; i <= 10; i++){
            if(i % 2 != 0){
                System.out.println("홀수 : " + i);
            }
        }
        
    }
}

반복문과 조건문을 결합하여 사용할 수 있다. 이 경우 반복 내에서 원하는 상태만 필터링하여 처리할 수 있다. 다음 구문과 동일한 결과가 나오지만, 더 복잡한 작업들을 쉽게 처리할 수 있다는 특징이 있다.

for(int i=1; i <= 10; i+=2){
    System.out.println("홀수 : " + i);
}

데모 5 : 카운트 측정하기

import java.lang.*;

public class ForExample05 {
    public static void main(String[] args){
        
        System.out.println("1부터 99 사이의 5가 포함된 숫자 개수 구하기");
        int count = 0;
        for(int i = 1 ; i < 100 ; i++ ){
            if(i / 10 == 5 || i % 10 == 5){
                System.out.println("발견 : " + i);
                count++;
            }
        }        
        System.out.println("5가 들어간 숫자 개수 : " + count);
                
    }
}

우선 5가 포함된 숫자는 다음과 같이 찾을 수 있다.

원하는 값을 찾을 수 있도록 조건을 설정했다면, 카운트 측정을 위한 변수를 반복문 위에 생성한다. 이 변수는 계수기의 역할을 수행할 수 있도록 초기값을 0으로 설정해준다.

int count = 0;

초기화해둔 변수를 원하는 상황에서 증가시켜 횟수를 측정한다.

if(i / 10 == 5 || i % 10 == 5){
    System.out.println("발견 : " + i);
    count++;
}

반복이 종료된 뒤 count 를 출력하면 계산된 횟수가 출력된다.

System.out.println("5가 들어간 숫자 개수 : " + count);

데모 6 : 누적합 계산하기

import java.lang.*;

public class ForExample06 {
    public static void main(String[] args){
        
        //1부터 100까지 합계 계산하기
        int total = 0;
        for(int i = 1 ; i <= 100 ; i++){
            total += i;
        }
        System.out.println("합계 : " + total);
        
    }
}

1부터 100까지 합계를 구하는 가장 쉬운 방법은 직접 더하는 것이다.

int total = 1 + 2 + 3 + 4 + 5 + ... + 96 + 97 + 98 + 99 + 100;
System.out.println("합계 : " + total);

하지만 범위가 커질 수록 비효율적이므로 반복을 적용시킬 수 있도록 한 번에 하나의 값을 더하는 코드로 변경한다.

int total = 0;
total += 1;
total += 2;
total += 3;
total += 4;
total += 5;
/* 중간 생략 */
total += 96;
total += 97;
total += 98;
total += 99;
total += 100;
System.out.println("합계 : " + total);

규칙이 생기게 되므로 다음과 같이 반복문으로 변경할 수 있다.

int total = 0;
for(int i = 1 ; i <= 100 ; i++){
    total += i;
}
System.out.println("합계 : " + total);

Last updated