for 반복문은 특정 횟수나 특정 구간 내에서 지속적으로 내부 구문을 실행하도록 만들어진 제어문의 형태이다.
형태
for(선언부; 조건부; 증감부){ 실행코드}
선언부 : 구문 내에서 사용할 변수를 선언하는 영역
조건부 : 구문이 실행되기 위한 조건을 정의하는 영역
증감부 : 변수의 증가 혹은 감소를 처리하는 영역
실행 순서
선언부에서 변수 생성
조건부 검사 (거짓일 경우 종료)
내부 구문 실행
증감부 실행
2번으로 이동
데모 1 : while 구문과의 비교
for와 while 구문으로 각각 1부터 10까지 화면에 출력하는 예제를 만들어보면 다음과 같다.
importjava.lang.*;publicclassForExample01 {publicstaticvoidmain(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 : 증감 조절
importjava.lang.*;publicclassForExample02 {publicstaticvoidmain(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); } }}
반복문과 조건문을 결합하여 사용할 수 있다. 이 경우 반복 내에서 원하는 상태만 필터링하여 처리할 수 있다. 다음 구문과 동일한 결과가 나오지만, 더 복잡한 작업들을 쉽게 처리할 수 있다는 특징이 있다.
for(int i=1; i <=10; i+=2){System.out.println("홀수 : "+ i);}
데모 5 : 카운트 측정하기
importjava.lang.*;publicclassForExample05 {publicstaticvoidmain(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 : 누적합 계산하기
importjava.lang.*;publicclassForExample06 {publicstaticvoidmain(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);