[Java] 제어문 - 반복문 - for문, 중첩 반복문

나영원·2020년 8월 24일
1

Java_basic

목록 보기
12/60

for문

앞에서 배운 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단만 출력하는 문제가 발생할 수 있습니다.

profile
배우는 개발 일기

1개의 댓글

comment-user-thumbnail
2021년 11월 8일

안녕하세요. 지나가다가 구구단 while문 관련해서 궁금한 부분이 있어 질문 남깁니다.
이미 조건문 시작 전, int count = 1; 으로 초기화된 것 아닌가요?
혹시 내부 반복문의 초기화가 별도로 필요한 것일까요?

답글 달기