앞에서 배운 while문 do-while문에 이어 마지막 반복문인 for문을 알아보겠습니다. 먼저 for문의 구조는 다음과 같습니다.
for(초기화식; 조건식; 증감식) {
수행문;
}
for문은 다른 반복문들에 비해 가독성이 좋고 일정 횟수에 기반한 반복을 구현할 때 효율적이란 특징이 있는데 while문에 조건식을 넣는자리에 초기화식, 증감식이 같이 들어가 있어 어떻게 시작이되어서 몇번 반복되는지를 한눈에 볼 수 있기 때문입니다.
int num
for(num = 1; num<=5; num++) {
Systemout.pirntln(num);
}
위와 예제를 살펴보면 num이 1부터 5까지 증가하며 num을 출력하는 것을 반복하고 num 6까지 증가 되었을 때 반복문을 빠져나오는 것을 한눈에 알아 볼 수 있습니다.
참고로 for문은 while문과 마찬가지로 첫번째 반복에서 조건을 만족하지 않는다면 바로 반복문을 빠져나오게 됩니다. (do-while문만 수행을 먼저하고 조건식이 만족하는지를 검토합니다.)
public class ForExample {
public static void main(String[] args) {
int num;
int sum = 0;
for (num=1; num<=10; num++) { // 횟수만 의미가 있으면 num=0으로 두고 num<10으로두고하면 배열과 쓰기편함
sum += num ; // 증감식이나 초기값 모두 ,를 통해 여러개줄 수 있다.
}
System.out.println(sum); //55
int num2 = 1;
int sum2 = 0;
while (num2<=10) {
sum2 += num2;
num2++;
}
System.out.println(sum2); //55
위의 예제는 for문과 while문으로 각각 1~10까지의 합을 구하는 과정입니다. 두 반복문 모두 같은 결과 값이 나왔지만 for문이 조건들이 한 줄에 정리되어 더 가독성이 좋은 것을 알 수 있습니다.
참고로 반복문을 사용할때 10번의 반복을 해야 한다고 할 때 for문에 조건을for( num=1; num<=0; num++)로 하는 것이 아닌 num=0; num <10와 같이 표현하는 것이 나중에 배울 배열과 함께 사용할 때 더 가독성을 좋게 해줄 수 있습니다.
또한 for문에 초기화식이나 증감식 모두 ' , '를 통해 여러개 입력 할 수 있습니다.
마지막으로 for()안의 내용들은 생략될 수 있으며 for( ; ; ) 와 같이 모두 생략하게 되면 while(true)와 같이 무한반복을 하게 됩니다.
반복문속에 반복문이 있는 구조로 외부 반복문과 내부 반복문의 변수의 값 변화에 유의하며 구현해야 합니다.
구구단을 구현하는 예제를 통해 중첩 반복문을 더 자세히 알아보도록 하겠습니다.
public class NestedLoopExample {
public static void main(String[] args) {
// 2 X 3에 2는 dan 3은 count
int dan;
int count;
for(dan = 2; dan < 10; dan++) {
for(count = 1; count < 10; count++) {
// int multi = dan * count;
// System.out.printf("%d X %d = %d\n",dan,count,multi);
System.out.println(dan + " X " + count + " = " + dan*count);
}
System.out.println();
}
결과값)
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
...
3X1 =
3 X 1 = 3
3 X 2 = 6
3 X 3 = 9
...
for문을 활용 하여 외부 반복문을 통해 각 단을 표현하고 내부 반복문을 통해 단별 곱셈을 출력하는 방식으로 구구단을 구현했습니다. 다음은 while문을 통해 구구단을 구현해 보도록 하겠습니다.
public class NestedLoopExample2 {
public static void main(String[] args) {
int dan = 2;
int count = 1;
while(dan < 10) {
count = 1; //이걸 안쓰니까 2단밖에 안된다.
while (count < 10) {
System.out.println(dan + " X " + count + " = "+ dan*count);
count++;
}
dan++;
System.out.println();
while문을 활용하여서 구구단을 구현하였습니다. 유의할 점은 for문은 초기화식이 내재되어 있기때문에 따로 변수를 초기화해줄 필요가 없지만 while문을 그렇지 않기 때문에 count =1;로 초기화를 시키지 않을 경우 2단만 출력하는 문제가 발생할 수 있습니다.
안녕하세요. 지나가다가 구구단 while문 관련해서 궁금한 부분이 있어 질문 남깁니다.
이미 조건문 시작 전, int count = 1; 으로 초기화된 것 아닌가요?
혹시 내부 반복문의 초기화가 별도로 필요한 것일까요?