몰입하며 나아가는 개발이란

Language/Java

[for] loop ([for] 반복문)

류하을 2019. 12. 1. 18:16

for

for 반복문의 형태는 아래와 같다.

		/* 
		 * 조건문 : loop == 반복문(순환문)
		 * 
		 * for( 변수선언 및 초기화(1) ; 조건식(2)(5)(8) ; 연산식(4)(7)  ){
		 * 		처리(3)(6)
		 * }
		 * (9)
		 */

for문 안쪽에서 변수선언 및 초기화 될 수 있으며, 조건식에 의하여 처리를 진행 후,

연산식에서 선언된 변수를 변경하여 다시 조건식을 거쳐 그다음 처리를 진행하는 방식이다.

조건식에 맞지 않으면 for문 전체를 빠져나가게 된다.

 

명확한 반복 횟수가 있을때 주로사용된다.

 

for 문 예제1)

		int i; // for문 밖에서 선언된 변수를 for문에서 초기화하여 넣을 수 도 있다.
		for(i = 0;i < 10; i++) {
			System.out.println("i = " + i);
		}
		System.out.println("i = " + i);
		// console result // 
		/* 
		 * i = 0
		 * i = 1
		 * i = 2
		 * i = 3
		 * i = 4
		 * i = 5
		 * i = 6
		 * i = 7
		 * i = 8
		 * i = 9
		 * i = 10
		 */

for 문 예제2)

        	for(int a = 0, b = 0; a < 10; a++, b += 2) {
		System.out.println("a = " + a);
		System.out.println("b = " + b);
		}
		// console result // 
		/* 
		 * a = 0
		 * b = 0
		 * a = 1
		 * b = 2
		 * a = 2
		 * b = 4
		 * a = 3
		 * b = 6
		 * a = 4
		 * b = 8
		 * a = 5
		 * b = 10
		 * a = 6
		 * b = 12
		 * a = 7
		 * b = 14
		 * a = 8
		 * b = 16
		 * a = 9
		 * b = 18
		 */

for 문 예제3)

//		for(int a = 0; ; a++) { // 조건문이 없기때문에 무한반복문이 되어 버리므로 주의하자.
//			System.out.println("a = " + a);
//		}

콘솔에서 무한반복 문을 실행하였을 경우 ctrl + f2로 종료가 가능하다.

foreach

foreach 문은 기본적으로 for 문과 동일한 작업을 실행한다.

for문과 다르게 몇번 실행할지를 결정하지 않으며,

해당하는 변수나 목록의 항목을 하나씩 꺼내 선언된 변수에 대입해준다.

즉, 원본을 건드리지 않고 변수에 복제된 인스턴스를 사용하여 처리하게된다.

배열이나 목록(리스트)에서 특정값을 찾아 변경해 주어야 할때는 주의 해야한다.

		/*
		 * for( 변수선언 : 배열 or 목록 ){
		 *	선언된 변수 처리
		 * }
		 * /

foreach 문 배열 사용 예제)

		int array[] = { 11, 22, 33 };
		for (int j : array) {
			System.out.println("j = " + j);
		}
		
		char cArr[] = { 'A', 'B', 'C' };
		
		for (char c : cArr) {
			System.out.println("c = " + c);
		}

 

for, foreach를 활용하여 문제를 해결해보자.

1. 1 ~ 100 사이에 있는 숫자 중 짝수들의 합과 홀수들의 합을 구하라.

2. 문자열의 'A'문자를 찾아서 'a'로 변경하라 char ch[] = { 'D', 'W', 'A', 'V', 'Q', 'A' };

3. 2번 문제의 답으로 나온 char ch[] 문자열을 전부 소문자로 변경하라.(ASCII code 사용) 

 

 

1번 정답)

		// 1 ~ 100 사이에 있는 숫자 중 짝수들의 합과 홀수들의 합을 구하라.
		int sum1 = 0;
		int sum2 = 0;
		for (int j = 1; j <= 100; j++) {
			if(j % 2 == 0) {
				sum2 = sum2 + j;
			}else {
				sum1 = sum1 + j;
			}
		}
		System.out.println("짝수의 합:" + sum2);
		System.out.println("홀수의 합:" + sum1);
		// console result // 
		/* 
		 * 짝수의 합:2550
		 * 홀수의 합:2500
		 */

2,3번 정답)

		// 문자열의 'A'문자를 찾아서 'a'로 변경하라
		char ch[] = { 'D', 'W', 'A', 'V', 'Q', 'A' };		
		for (int j = 0; j < ch.length; j++) {
			if(ch[j] == 'A') {
				ch[j] = 'a';				
			}
		}
		int n = 0;
		for (char c : ch) {
			if(c == 'A') {
				ch[n] = 'a';
			}
			n++;
		}	
		for (int j = 0; j < ch.length; j++) {
			System.out.println("ch[" + j + "] = " + ch[j]);
		}
		// console result // 
		/* 
		 * ch[0] = D
		 * ch[1] = W
		 * ch[2] = a
		 * ch[3] = V
		 * ch[4] = Q
		 * ch[5] = a
		 */
			
		// ch 문자열을 전부 소문자로 변경하라.	ASCII A:65 a:97 
		for (int j = 0; j < ch.length; j++) {
			char c = ch[j];	
			int anum = (int)c;
			if(anum < 97) {
				ch[j] = (char)(anum + 32);
			}			
		}
		for (int j = 0; j < ch.length; j++) {
			System.out.println("ch[" + j + "] = " + ch[j]);
		}
		// console result // 
		/* 
		 * ch[0] = d
		 * ch[1] = w
		 * ch[2] = a
		 * ch[3] = v
		 * ch[4] = q
		 * ch[5] = a
		 */