자바/자바 입문 공부일지

자바 기초 공부 일지 8. 반복문 while문, for문, break와 continue, 중첩 반복문

Tomitom 2022. 10. 25. 15:56
반응형

 

 

 

● while은 파이썬에서 사용하던 것과 기존 문법이 비슷합니다. 

while(반복 조건문){ 

반복영역

 

조건문이 참일 경우에 하단의 반복영역이 계속 반복됩니다. 

자바에서는 주로 while과 증감연산자를 같이 섞어서 사용합니다. 

package day12;

public class Test03 {

	public static void main(String[] args) {
	
		int num = 1;
		
		while(num<3) {
			System.out.println("졸리다...");
			num++;
			// while 로 숫자연산으로 쓸 때 주로 증감 연산자를 씁니다.						
			
		}
		
	}

}

진짜졸리다.. 밥먹고 졸리다..

 

do while 은 조건을 실행한 뒤에 조건을 심사합니다. 

즉, do while 은 무조건 한 번은 실행되는 반복문입니다. 

do { 

무조건 한 번 실행되는 영역 

} while( 반복 조건문);

 

package day12;

public class Test03 {

	public static void main(String[] args) {
	
			int num = 10; 
			do {
				System.out.println("최초 1회는 무조건 수행합니다.");
				

			}while(num != 10);// num 이 10이 아니어야 반복을 한다. 
			
		}
		
	}

기계 제어 시에 do while 로 최초 한 번은 수행하게 하는 역할로 주로 사용됩니다. 

 

while을 활용한 예제 하나를 풀어볼게요. 

1부터 150까지의 합을 구하는 프로그램입니다.

package day12;


/*
 * 1부터 150까지 합을 구하는 프로그램을 만들자.
 * 반드시 while문이 포함되는 코드를 써서 완성한다. 
 */

public class Quiz02 {

	public static void main(String[] args) {
	
		int num = 0;
		int sum = 0;
		while(num <	150) {
			sum += ++num ;}
		
		System.out.println(sum);
			
	}

}

 

 

 

● for문을 살펴볼게요. 

조건에 대한 반복문으로 사용하는 for 문입니다.

 

1번 반복의 횟수를 세기 위한 변수를 초기식

2번은 반복의 조건을 적는 조건식 

3번은 조건의 실행식

4번은 반복식 또는 증감식이라고 합니다. 

 

while문과 달리 for문은 횟수를 정해서 반복을 합니다. 

 

package day12;

public class For {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		
		for(int i = 0 ; i < 3 ; i ++ ) {
			System.out.println("for문의 반복");
			
		}
	}

}

 

 

 

●  break와 continue

break 는 반복문에서 탈출하기 위한 코드입니다. 

continue 는 반복문의 처음 조건 검사로 돌아간다는 코드입니다. 

 

braek 문의 예제부터 살펴볼게요. 

처음 만나는 5의 배수와 7의 배수인 수를 찾는 반복문을 만듭니다.

package day12;

public class For {

	public static void main(String[] args) {
		
	
		int num = 1;
		boolean search = false; 
		
		// 처음 만나는 5의 배수와 7의 배수인 수를 찾는 반복문을 만듭니다. 
		
		while(num<100) {
			if(((num % 5 == 0)&& (num % 7 == 0))) {
				search = true;
				break;  
			}
			num ++;
		}
		if(search)
			System.out.println("찾는 정수 : " + num);
		
	}

}

int num = 1;                                                     -> 처음 num의 변수 값을 int 1로 선언합니다. 
boolean search = false;                                  -> search 변수 값을 불리언 false 로 선언했어요. 

while(num<100) {                                             -> num의 값이 100미만일 경우에 반복하는 while 조건문을 작성합니다. 
if(((num % 5 == 0)&& (num % 7 == 0))) {         -> 만약 5와 7이 0으로 나누어 떨어지는 조건문이 성립을 한다면
search = true;                                                  -> search 불리언의 값을 true 로 변환합니다. 
break;                                -> 그리고 처음으로 값을 찾았을 때 while의 조건문을 여기서 멈추어 반복문에서 탈출합니다. 


}
num ++;         -> 만약 break를 작성하지 않아서 탈출하지 않았다면 계속 숫자를 증가시키면서 num 의 값을 찾았을 거예요. 
}


if(search)         -> 그리고 search 의 값이 true 라면  (if 조건문은 true 의 경우 출력을 하는 조건문이기 때문에) 
System.out.println("찾는 정수 : " + num);         ->  num의 값을 출력합니다. 

 

 

count 문의 예제를 살펴볼게요. 

100이하의 5와 7의 배수만 출력하는 조건식을 입력할게요.

package day12;

public class Continue {

	public static void main(String[] args) {
		
		int num = 0;
		int count = 0;
		
		// 100이하의 5와 7의 배수만 출력하는 조건식을 입력할게요. 
		
		while((num++) < 100) {
			if(((num % 5) != 0) || ((num % 7) != 0))
				continue; // 5와 7의 배수가 아니라면 다시 처음으로 이동
			count++;
			System.out.println(num); // 5와 7의 배수인 경우만 실행
		}
		
		System.out.println("count: " + count);
		
	}

}

 

int num = 0;
int count = 0;

// 100이하의 5와 7의 배수만 출력하는 조건식을 입력할게요. 

while((num++) < 100) {
if(((num % 5) != 0) || ((num % 7) != 0))
continue; // 5와 7의 배수가 아니라면 다시 처음으로 이동
count++;
System.out.println(num); // 5와 7의 배수인 경우만 실행
}

System.out.println("count: " + count);

 

 

● 중첩 반복문

반복문 속에 반복문을 삽입해서 중첩된 이중 이상의 반복문을 중첩 반복문이라고 합니다.

for문 중첩 반복문이 가장 많이 사용됩니다. 

그야말로 for문이 여러개 있는 반복문으로  외부 반복과 내부 반복이 나뉩니다. 

외부 반복은 최초로 1차부터 시작되는 반복으로  1차 반복 속에 있는 2차 반복이 모두 종료되면 다시 1차 반복이 시작됩니다. 

즉 다음과 같이 순차적으로 반복이 진행됩니다. 

 

외부 반복1 (외부 반복1 속의 내부 반복 1 -> 내부 반복 2 -> 내부 반복 3)

-> 외부 반복2 (외부 반복2 속의 내부 반복 1 -> 내부 반복 2 -> 내부 반복 3)

-> 외부 반복3 (외부 반복3 속의 내부 반복 1 -> 내부 반복 2 -> 내부 반복 3)

 

package day12;

public class loof {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		
		for(int i = 0 ; i < 3 ; i++ ) {
			System.out.println("----------");
			for(int j = 0; j < 3 ; j ++ ) {
				System.out.print(i+","+j + " ");
				}
			System.out.print('\n');
		}
		
	}

}

 

 

중첩 반복문의 경우 for가 대부분입니다. 

while 의 경우에는 조건을 기준으로 하기 때문에 중첩문으로 만드는 것에는 for보다 적절하지 않습니다. 

while로 중첩 반복문을 만들어볼게요. 

 

package day12;

public class loof {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		
	int outer = 0 ; 
	
	while(outer++ < 3 ) {
		System.out.println("outer") ;
		int inner = 0; 
		while(inner++ < 2) {
			System.out.println("inner");
			}
		
		}
		
	}

}

 

while의 중첩 반복문의 형식은 for과 유사합니다. 

여기까지 중첩 반복문을 마무리할게요! 

 

점점 포스팅에서 제가 말을 잃어간다고 생각한다면 그것이 True 입니다...
성격이 ㅠ. ... 한 번 진도가 나가면 그걸 이해해야만 다음 진도를 나갈 수 있어서 소화하는데 시간이 오래걸리네요.. 

아자자 파이팅! 

반응형