for 반복문은 특정 횟수나 특정 구간 내에서 지속적으로 내부 구문을 실행하도록 만들어진 제어문의 형태이다.
형태
for(선언부; 조건부; 증감부){
실행코드
}
선언부 : 구문 내에서 사용할 변수를 선언하는 영역
조건부 : 구문이 실행되기 위한 조건을 정의하는 영역
증감부 : 변수의 증가 혹은 감소를 처리하는 영역
실행 순서
선언부에서 변수 생성
조건부 검사 (거짓일 경우 종료)
내부 구문 실행
증감부 실행
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);
}
}
}
}
반복문과 조건문을 결합하여 사용할 수 있다. 이 경우 반복 내에서 원하는 상태만 필터링하여 처리할 수 있다. 다음 구문과 동일한 결과가 나오지만, 더 복잡한 작업들을 쉽게 처리할 수 있다는 특징이 있다.
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);
}
}
하지만 범위가 커질 수록 비효율적이므로 반복을 적용시킬 수 있도록 한 번에 하나의 값을 더하는 코드로 변경한다.
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);