for 문
for문은 반복 횟수를 알고 있을 때 적합합니다.
구조가 조금 복잡하지만 직관적이라 오히려 이해하기 쉽습니다.
// 1부터 5까지 1씩증가
for (int i = 1; i <= 5; i++) {
System.out.println("I can do it.");
}
for ( 초기화; 조건식; 증감식) {
// 조건식이 참일 때 수행될 문장들을 적는다.
}
제일 먼저 '초기화'가 수행되고, 그 이후부터는 조건식이 참인 동안 '조건식 > 수행될 문장 > 증감식'의 순서로 계속 반복합니다. 그러다가 조건식이 거짓이 되면, for문 전체를 빠져나가게 됩니다.
초기화
반복문에 사용될 변수를 초기화하는 부분이며 처음에 한번만 수행됩니다.
보통 변수 하나로 for문을 제어하지만, 둘 이상의 변수가 필요할 때는 아래와 같이 콤마','를 구분자로 변수를 초기화하면 됩니다.
for (int i = 1, j = 0; i <= 10; i++) { . . . }
// --------------
조건식
조건식의 값이 참(true)이면 반복을 계속하고, 거짓(false)이면 반복을 중단하고 for문을 벗어납니다.
for의 뜻이 '~하는 동안'이므로 조건식이 '참인 동안' 반복을 계속한다고 생각하면 쉽습니다.
for (int i = 1; i <= 10; i++) { . . . }
// -------
증감식
반복문을 제어하는 변수의 값을 증가 또는 감소시키는 식입니다.
매 반복마다 변수의 값이 증감식에 의해서 점진적으로 변하다가 결국 조건식이 거짓이 되어 for문을 벗어나게 됩니다.
변수의 값을 1씩 증가시키는 연산자 '++'이 증감식에 주로 사용되지만, 다음과 같이 다양한 연산자들로 작성 가능합니다.
for (int i = 1; i <= 10; i++) { . . . } // 1부터 10까지 1씩 증가
for (int i = 10; i >= 1; i--) { . . . } // 10부터 1까지 1씩 감소
for (int i = 1; i <= 10; i+=2) { . . . } // 1부터 10까지 2씩 증가
for (int i = 1; i <= 10; i*=3) { . . . } // 1부터 10까지 3배씩 증가
public class Rhombus {
public static void main(String[] args) {
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 5; j++) {
boolean b = (j + i <= 1) || (j - i >= 3) ;
if(!b) {
System.out.print("*");
}
else {
System.out.print(" ");
}
}
System.out.println();
}
for(int i = 2; i < 5; i++) {
for(int j = 0; j < 5; j++) {
boolean b = (i-j >= 3) || (i + j >= 7);
if(!b) {
System.out.print("*");
}
else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
for 문과 while 문의 비교
1부터 10까지의 정수를 순서대로 출력하는 for문을 while문으로 변경하면 아래와 같다.
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
int i = 1;
while (i <= 10) {
System.out.println(i);
i++;
}
위의 두 코드는 완전히 동일합니다.
for문은 초기화, 조건식, 증감식을 한 곳에 모아 놓은 것일 뿐, while문과 다르지 않습니다.
그래서 for문이 더 간결하고 알아보기 쉽습니다.
만일 초기화나 증감식이 필요하지 않는 경우라면, while문이 더 적합할 것입니다.
for문보다 while문이 적합한 예제
public class FlowEx23 {
public static void main(String[] args) {
int i = 5;
while(i-- !=0) {
System.out.println(i + " - I can do it.");
}
}
}
댓글