[10] Java - 반복문 (for, while, do~while, break와 continue)

kangsun·2022년 9월 17일
0

Java

목록 보기
11/44

📌 반복문

조건을 만족하는 동안 블럭{}을 반복 - 반복횟수를 알 때 적합


1. for문

		for (int a=1; a<=3; a++) {
			System.out.println("JAVA");
		} // for end
		
		// for문에 선언된 변수는 for문에서만 사용가능하다.
		// System.out.println(a); 에러 (scope)
		
		int b= 0;
		for(b=1; b<=3; b++) {
			System.out.println("PYTHON");
		} // for end
		
		System.out.println(b);

🖨 Console
JAVA
JAVA
JAVA
PYTHON
PYTHON
PYTHON
4 (i=4까지 대입이 되고 for문을 빠져나온다)

  • for (int a=1; a<=3; a++)
    - 1부터 3까지 1씩 증가한다. 1,2,3

  • {System.out.println("JAVA");}
    - 블록 안에 있는 문장을 3번 반복한다.

  • System.out.println(b);
    - (i=4까지 대입이 되고 for문을 빠져나온다)

• for문 : 누적의 합 구하기

		int sum=0;
		
		for(int i=0; i<=100; i++) {
			sum += i;
		}
		
		System.out.println("0부터 100까지의 합 = " + sum);

🖨 Console
0부터 100까지의 합 = 5050


2. while문

		int i = 0;
		while(i<=3) {
			System.out.println("SEOUL");
			i++;
		} // while end

🖨 Console
SEOUL
SEOUL
SEOUL
SEOUL

  • 0, 1, 2, 3 까지 출력되기 때문에 System.out.println("SEOUL"); 4번 출력된다

• while문 : 누적의 합 구하기

1. i++; 뒤에 있을 때

		int sum=0;
        int i  =0;
		
		while(i<=100) {
			sum += i;
			i++;
		}
		
		System.out.println("0부터 100까지의 합 = " + sum);

🖨 Console
0부터 100까지의 합 = 5050

2. i++; 앞에 있을 때

		int sum=0;
        int i  =0;
		
		while(i<=100) {
        	i++;
			sum += i;
		}
		
		System.out.println("0부터 100까지의 합 = " + sum);

🖨 Console
0부터 100까지의 합 = 5151

  • while문에서 i++ 가 앞에있으면 101까지 더해져 5151 이 나온다.
  • i가 100일 때 , i++ 증가해서 101, sum에 101이 누적되기 때문.

3. while 반복문 조건에 sum 값을 넣었을 때

		int sum=0;
        int i  =0;
		
		while(sum<=100) {
			i++;
			sum += i;
			System.out.print("i = " + i + " ");
			System.out.println("sum = " + sum);
		}
       	
        System.out.println("최종 : " + sum);

🖨 Console
최종 : 105

  • 1+2+3+4+5+6+7+ ... 이 아니고 ❌

  • sum이 0일 때 i=1로 증가하고 i=1값이 sum에 들어가 sum=1 부터 시작한다.
    1+2=3
    3+3=6
    6+4=10
    10+5=15
    15+6=21
    21+7=28
    28+8=36
    36+9=45
    45+10=55
    55+11=66
    66+12=78
    78+13=91
    91+14=105

  • i=1일 때 sum 값에 1이 들어가면
    i++ 가 되어 i=2가 되고
    sum에는 1이 들어있으므로 그 값에 2가 누적돼서 sum은 3이 된다.
    반복문으로 돌아가서
    sum=3 이 들어가고
    i++가 되어 i=3 이 된다.
    sum에는 3이 들어가 있으므로 그 값에 i=3이 더해져 sum은 6이 된다.

  • 이런 식으로 sum이 100보다 작거나 같을 때까지 반복되는 문장


3. do~while

		int j = 0;
		do {
			System.out.println(j+"JEJU");
			j++;
		} while (j<=3);

🖨 Console
0JEJU
1JEJU
2JEJU
3JEJU

  • j 가 0,1,2,3 일 때 System.out.println(j+"JEJU"); 이 실행되므로 4번 출력된다.

4. break와 continue문

break

  • 자신이 포함된 하나의 반복문을 벗어난다.
		for(int a=1; a<10; a++) {
			if(a==5) {
				break;
			}//if end
			System.out.print(a + " ");
		}//for end

🖨 Console
1 2 3 4

  • for(int a=1; a<10; a++) 문에 조건이 주어진다.

  • if 만약 a가 5일 때 break를 걸어준다.

  • break문이 실행되면 System.out.print(a + " "); 는 실행되지 않고 for문을 완전히 벗어난다.

  • 결과적으로 1, 2, 3, 4 까지만 출력되고 종료된다.


continue

  • 자신이 포함된 반복문의 끝으로 이동 → 다음 반복문으로 넘어감
  • 전체 반복 중에서 특정 조건시 반복을 건너뛸 때 유용
		for(int a=1; a<10; a++) {
			if(a==5) {
				continue;
			}//if end
		System.out.println(a + " ");
		}//for end

🖨 Console
1
2
3
4
6
7
8
9

  • for(int a=1; a<10; a++)
    - 1에서부터 9까지 반복하고

  • if(a==5)
    - a가 5와 같은지 판단

  • continue;
    - 반복문의 끝으로 돌아간다.
    - 밑에 코드 다 무시하고 블럭의 끝으로 건너뛴다.

• for 문의 실행 순서

  1. a=1
  2. 1<10
  3. if문 실행 (a==5) 조건 - true or false
  4. false - System.out.println();
  5. true - continue;
  6. a++
  7. 다시 조건 실행 a=2
  8. 2<10
    .
    .
    반복

5. 이름붙은 반복문

  • 반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있다.
	Loop1 : for(int i=2; i<=9; i++) {
    	for(int j=1; j<=9; j++) {
        	if(j==5)
            	break Loop1;
                //break;
                //continue;
            System.out.println(i + "*" + j + "=" + i*j);
            }//for end
        System.out.println();
    }// Loop end

🖨 Console
2*1=2
2*2=4
2*3=6
2*4=8

  • break 문에 이름을 적어주면 전체반복문을 나갈 수 있다.

  • 구구단 2단의 *4 까지만 출력된다.


✏️ break 만 쓰면?

	Loop1 : for(int i=2; i<=9; i++) {
    	for(int j=1; j<=9; j++) {
        	if(j==5)
            	//break Loop1;
                break;
                //continue;
            System.out.println(i + "*" + j + "=" + i*j);
            }//for end
        System.out.println();
    }// Loop end

🖨 Console
2*1=2
2*2=4
2*3=6
2*4=8

3*1=3
3*2=6
3*3=9
3*4=12
.
.
.
9*1=9
9*2=18
9*3=27
9*4=36

  • 2단부터 9단까지 *4 까지만 출력한다.

  • 하나의 for문만 나가기 때문에 Loop1 for로 돌아가 반복문을 반복한다.


✏️ continue 만 쓰면?

	Loop1 : for(int i=2; i<=9; i++) {
    	for(int j=1; j<=9; j++) {
        	if(j==5)
            	//break Loop1;
                //break;
                continue;
            System.out.println(i + "*" + j + "=" + i*j);
            }//for end
        System.out.println();
    }// Loop end

🖨 Console
2*1=2
2*2=4
2*3=6
2*4=8
2*6=12
2*7=14
2*8=16
2*9=18

3*1=3
3*2=6
3*3=9
3*4=12
3*6=18
3*7=21
3*8=24
3*9=27
.
.
.
9*1=9
9*2=18
9*3=27
9*4=36
9*6=54
9*7=63
9*8=72
9*9=81

  • *5 빼고 구구단 전체가 출력된다.


<총정리>

profile
코딩 공부 💻

0개의 댓글