반복문 - while문, for문, break, continue

🎂 while문

어떠한 조건(true)까지 반복 실행할 때

while(조건) {      // 조건 - 언제까지 반복할 지 정해주는 기준점
   반복 실행 영역
}

 

끊임없이 while문이 실행될 때 콘솔 우측에 보이는 빨간 네모(Terminate)를 누르면 중지됨

 

✔ false 입력했을 경우

while(false) {
  System.out.println("처음하는 반복문 while");
}

// Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Unreachable code

	at day01_211001.while_demo.main(while_demo.java:8)
→ 실행되지 않을 것이라는 Err 문구

 

위의 경우들은 반복 조건이 true나 false로 그 값들이 고정되어 있어.

우린 이걸 이제부터 하드코딩이라고 부르기로 했으요./

 

while문 연습
int i = 0;

while(i<10) {
  System.out.println("Coding Everybody");
  i++;
}

조건 : i < 10 → 1~9는 true지만 ~0, 10~은 false (비교 연산자는 오직 true / false 두 값만 가짐

 

i = 0 < 10 니까 true → print메서드 실행 → i++ = i + 1 → 0+1 = 1 = i에 새로 대입된다.

다시 while문 반복

i = 1 <10 니까 true → print메서드 실행 → i++ = i + 1 → 1+1 = 2 = i에 새로 대입된다.

∞반복!

언제까지? 조건이 false 될 때 까지 (i=10 < 10은 false 니까 while문 종료)

 

while문 해석본

 

 


🎂 for문

while문을 기반으로 하지만 더 효율적!

for(초기값;종료조건;반복실행) {
 반복 실행 구문
}

while문 vs for문

 

while문을 for문으로 바꿔보자
int i = 0;

while(i<10) {
  System.out.println("Coding Everybody");
  i++;
}
for(int i=0;i<10;i++) {
	System.out.println("for문은 간단하고 재밌지");
}

 

while문, for문 응용
int i=10;

while(i>=0) {
	System.out.println("while문 응용"+i);
i--;
}
for(int i=10;i>=0;i--) { // i<=5
	if(i<=5) {       // i>=0 을 하게 되면 i=10 <= 5가 false니까 for문, if문 종료되어 아무것도 출력X
    	System.out.println("for문 응용도 가능하지"+i);
    }
}

i=10>=0은 true → if문 진행 → 10<=5 false 니까 print메서드 출력 X 

i-- → 10-1= 9 = i 대입하여 for문 재실행

 

 


🎂 반복문의 효용

변수 i의 값을 바꿔주고 싶음 + 반복 조건의 값도 바꿔주고 싶을 때

 

 


🎂 반복문 제어

반복문을 멈춰주는 소중한 칭구칭긔

 

  1. break
    if문 조건이 true면 break; 가 실행되어 for문이 끝난다
    for(int i=0;i<10;i++) {
    	if(i==5)
        	break;
        System.out.println("Hello"+i);
    }

    Hello0
    Hello1
    Hello2
    Hello3
    Hello4 
    0<10 true니까 if문 실행 → 0==5 false → break; 실행 X → i++로 가서 i의 초기값을 바꿔준다
    4까지 반복
    5<10 true니까 if문 실행 → 5==5도 true → break; 실행 → for문이 완전히 끝나고 다음 명령문으로 내려갈거야
  2. continue
    if문 조건이 true면 해당 값은 print메서드를 출력하지 않고, for문의 3번으로 가서 i의 초기값을 바꾼 다음 다시 false 값이 나올때까지 반복
for(int i = 0;i<10;i++) {
	if(i==5)
    	continue;
    System.out.println("Hello"+i);
}
Hello0
Hello1
Hello2
Hello3
Hello4
Hello6
Hello7
Hello8
Hello9

4까지는 break와 똑같아

i=5 == 5 true → continue; 실행 → print메서드 출력X → i++로 가서 초기값을 바꿔 반복. 종료 조건(i<10)이 될 때 까지

break;와 continue; 순서, 그리고 if문인데 {}가 없는 이유
break; vs continue;

 

 


🎂 반복문 중첩

for(int i=0;i<10;i++) {
	for(int j=0;j<10;j++) {
		System.out.println(i+""+j);
	}
}

result: 00 01 02 03 04 05 06 07 08 09 10 ~ 99

1. 첫번째 for문이 0에서 시작하여 true값을 가지고 두번째 for문을 만남
2. 두번째 for문도 0에서 시작하여 true값을 가지니 print메서드 출력: 00
3. 첫번째 for문(i++)이 아니라 두번째 for문(j++)으로 가서 j의 초기값을 바꿈: 0 → 1
4. 두번째 for문이 false될 때까지 반복 : 09, 10<0은 false → print메서드 출력X
5. 첫번째 for문(i++) i의 초기값 변경 후 다시 반복 : 10
6. 2~4번 반복 하다 i=10<10은 false값이니 for문 종료

💬 print메서드에서 문자 타입의 데이터가 들어가는 순간, 정수는 숫자가 아닌 문자 그 자체로 바뀜
     그래서 위와 같은 결과가 나오게 된다
     ""를 넣지 않으면 숫자 데이터라 i와j 두 수를 한 값이 나온다.

 

'하다보면 되겠지 머.,. > 생활코딩_JAVA' 카테고리의 다른 글

배열 - for-each, 오류와 한계  (0) 2021.10.03
배열  (0) 2021.10.03
조건문2 - switch문 / 논리연산자  (0) 2021.09.30
조건문  (2) 2021.09.14
연산자, 비교와 Boolean  (0) 2021.09.14