본문 바로가기

자바스프링웹공부(2024)/자바

2024.08.02. 반복문( for문, 중첩for문 )

반응형

* for 문

 < 기본문법 >

 for (초기식; 조건식; 증감식) {
  // 조건식이 true 일 때 반복 실행할 문장들...
 } 
 //=> 실행순서 : 초기식 -> 조건식 -> 실행문 -> 증감식 -> 조건식 -> 실행문 ...
 // for문 안에서 선언된 i는 for문 종료후 제거됨.

 


*중첩 for문
- for문 내에 또 다른 for문을 기술하여 반복 문장을 여러번 반복하는 문  
 < 기본 문법 >

for (초기식1; 조건식1; 증감식1) { 
  for (초기식2; 조건식2; 증감식2) {
 
  } 
}

 

 

*이클립스 디버깅*

- 브레이크포인트 만들기 + F11

- "디버깅 편한 레이아웃으로 바꿀래?" 라고 물어봄. - 'switch' 클릭

- 우측상단에 벌레모양 아이콘 나오면서 코드가 멈춤

- F6으로 한단계식 진행하면서 값 확인하기

- 콘솔에 원하는 값이 찍히면 완성.

* 오늘의 과제 * 

Q. 변수에서 7의 갯수를 찾아서 출력하시오. 
    ex. int n = 247427723 일 경우 : 3

 

 

풀이과정 1.

 : 반복되는 과정을 찾아보자.

		// 7 3 7 2가 나오는 과정을 만들어보자. ( 각 자리의 숫자 뽑기)
		int num = 7372;
		System.out.println(num % 10); // 답 : 2, 이제 737만 나오면 된다. 7372에서 1의 자리를 없애려면 10을 나눠준다.
		System.out.println(num / 10); // 답 : 737, 또 마지막 자리인 7이 나와야 한다. 
		
		System.out.println((num / 10) % 10); // 답 : 7, 이제 73이 나와야 한다. 
		System.out.println(num / 10 / 10);	 // 답 : 73
		
		System.out.println((num / 10 / 10) % 10 % 10); // 3 
		System.out.println(num / 10 / 10 / 10); // 7
		
		System.out.println((num / 10 / 10 / 10) % 10 % 10 % 10); // 7 
		System.out.println(num / 10 / 10 / 10 /10); // 0
        
        // => 중복되는 결과 확인함.

 

 

 

풀이과정2.

 : 누적되는 것을 반복문으로 바꿔보자. 이 과정은 디버깅이 필요하다. 브레이크 포인트를 찍은 후 F11 눌러서 디버깅을 진행하자.

(1) 1의 자리 디버깅하기(F6으로 진행)

11번 행에서 while문을 디버깅한 결과 우측 "Variables 탭"에 num이 737이 되었고, Console 창에는 아무 값도 없다.
"Expressions 탭"에서 while문 안의 if문이 돌아갔는지 검사하니 true가 되었다. 맨 뒷자리 2가 계산이 되었는데 count 변수는 계산이 되지 않았다는 뜻이다.

 

(2)10의 자리 디버깅하기 (F6으로 진행)


- num % 10 과 num % 10 이 진행되어 
  count 가 1 증가함.
- num 값은 73이 됨.


- num % 10 과 num % 10 이 진행되어 
  count 는 그대로
- num 값은 7이 됨.
- num % 10 과 num % 10 이 진행되어 
  count 는 1증가하여 2가 됨.
- num 값은 0이 됨.
- 표가 미묘하게 바뀜.
- - >모든 작업이 진행되었지만 while 문의 파라미터 값이 true라서 무한루프를 돌고있음.

- 현재 num 도 계속 0이되고 있음. [  num 이 0이면 무한루프를 돌고, 
   num 이 0이 아니면 무한루프를 나간다
  고 가정하여 보자.]


->  while문에 num!=0 으로 조건변경 후, 새로 디버깅 시작함.
- "Variables 탭"과 "Expressions 탭"이 백지로 변하고 "콘솔"에 [ count : 2 ]를 찍어내고 종료함. 디버깅이 종료됨.
/*
  	변수에서 7의 갯수를 찾아서 출력하시오. 
  		ex. int n = 247427723 일 경우 : 3
 */
int num = 247427723;
int count = 0;
while(num != 0) {
	if(num % 10 == 7) {
		count++;
	}
	num /= 10;
}
System.out.println("count : "+count);
반응형