자바의 반복문 <while 문, do~while 문, for 문, 중첩 반복문, break와 continue>

Yeppi's 개발 일기·2022년 4월 29일
0

JAVA

목록 보기
8/27

1. 반복문이란?

조건이 참(true)인 동안 반복 수행

  • 주로 '반복 횟수'나 '값의 비교의 결과' 에 따라 true, false 판단

  • ex. 달리는 자동차, 일정 횟수 만큼 돌아가는 나사못, 특정 온도까지 가동되는 에어컨 etc...



2. while 문

개념

반복 횟수만큼 반복

  • 수행문을 수행하기 전 조건을 체크하고, 그 조건의 결과가 true 인 동안 반복 수행

  • 프로그램에서 반복 횟수가 명확하지 않을 때 사용


문법

  • 초기식→ 조건식→ 반복 수행문→ 증감식→. . . →조건식→ 반복 수행문→ 증감식

  • 조건 만큼, 반복 횟수 만큼 반복!

        초기식; 
        while (조건식) {
                반복 수행문;
                증감식;
        }

📄 예

  • 1부터 10까지 더하여 그 결과를 출력해 보자
		int sum = 0;
		int i = 1; 
		
		while (i <= 10) {
			if(i % 2 == 0) {
				sum = sum + i;
				System.out.println(i);
			}
			i++;
		}
        System.out.println(sum); // 55 출력

🧐 무한 반복

  • 증감식을 누락했거나, 조건식을 잘못 기술하는 실수에서 발생

  • 고의로 무한 루프 사용할 때도 있음

  • 예 : 종료할 때까지 계속 간단한 채팅을 입력받는 예제

		Scanner input = new Scanner(System.in);
		
		// 무한 루프 반복문
		while (true) {
			System.out.println("메시지 입력 후 Enter를 치세요.(종료할 때는 'quit')");
			String message = input.nextLine();
			if(message.equals("quit")) {
				// 읽은 메시지가 quit일 때 반복문 탈출
				break;
			}
			System.out.println("입력한 메시지 : " + message);
		}

		// Scanner 종료
		input.close();



3. do ~ while 문

개념

조건과 상관 없이 한번은 수행문을 수행

  • for 문과 while 문 → 처음 평가된 조건식의 결과가 거짓이면 ? 한 번도 실행되지 않음😨
    ❗ 이를 보완하기위해 만든 것이 do ~ while 문 ❗

  • while 문은 조건을 먼저 체크하고 반복 수행
    do-while 문은 조건과 상관 없이 수행을 한 번 하고나서 조건을 체크

  • 조건이 맞지 않으면(true 가 아니면) 더 이상 수행하지 않음


문법

  • 초기식→ 반복 수행문→ 증감식→ 조건식→ 반복 수행문→ 증감식→ 조건식→. . .
        초기식;
        do {
            반복 수행문;
      		증감식;   
        } while (조건식);

📄 예

  • 입력받는 모든 숫자의 합을 구하는 예제

  • 입력이 0이 되면 반복을 그만하고 합을 출력

		Scanner scanner = new Scanner(System.in);
		int input; 
		int sum = 0;

		do {
			input = scanner.nextInt();
			sum += input;
			
		} while(input != 0);
        
		System.out.println(sum);



4. for 문

개념

반복하는 횟수를 알고 있는 경우 사용

  • for문의 문장들은 ❗ 생략가능 ❗
    - 초기화식 생략 : 이미 이전에 값이 초기화 되어 for 내부에서 값을 지정할 필요가 없는 경우
    - 조건식 생략 : 반복 수행에 대한 조건이 수행문 내부에 있는 경우
    - 증감식 생략 : 증감식에 대한 연산이 복잡하거나 다른 변수의 연산 결과값에 결정되는 경우
    - 무한 반복

문법

  • 초기식→ 조건식→ 반복 수행문→ 증감식→ . . .→ 조건식→ 반복 수행문→ 증감식
       for (초기식; 조건식; 증감식;) {
            반복 수행문;
       }

📄 예

  • 1부터 10까지 짝수의 합을 출력
		int sum = 0;
		
		for (int i = 1; i <= 10; i++) {
			if(i % 2 == 0) {
				sum = sum + i;
			}
		}
		System.out.println("짝수 합계 " + sum); // 30 출력

🧐 i+1과 i++의 차이점

i+1 과 i++은 다르다

  • i+1 자체는 i 값이 증가되지 않음

  • 대입연산자 i++ 를 사용해야 값이 증가함

		int i = 0;
		System.out.println(i + 1); // 1
		System.out.println("i + 1한 i의 실질적인 값은? " + i); // 0
		
		
		System.out.println(++i); // 1
		System.out.println("++i한 i의 실질적인 값은? " + i); // 1

		
		System.out.println(i++); // 1
		System.out.println("i++한 i의 실질적인 값은? " + i); // 2
<출력결과>
1
i + 1한 i의 실질적인 값은? 0
1
++i한 i의 실질적인 값은? 1
1
i++한 i의 실질적인 값은? 2


5. 중첩 반복문

개념

반복문 안에 반복문 안에 반복문. . .

  • 반복문 내부에 또 다른 반복문이 있음

  • 여러 겹으로 반복문을 겹쳐서 구현 가능
    단, 수행시간에 문제가 발생할 수 있음

  • 외부 반복문과 내부 반복문 간의 변수 값 변화에 유의 하며 구현


문법

  • for 중첩문
       for (초기식; 조건식; 증감식;) {
       
             for (초기식; 조건식; 증감식;) {
            		반복 수행문;
       		 }
       }
  • while 중첩문
        초기식; 
        while (조건식) {
            초기식;
            
        	while (조건식) {
            
                반복 수행문;
                증감식;
        	}
        }

📄 예

  • for 문으로 2~9단까지 구구단 출력
		int dan = 2;
		int count = 1;
		
		for( dan = 2; dan <= 9; dan++) {
			
			for(count = 1; count <=9; count++) {
				
				System.out.println( dan + "X" + count + "=" + dan * count);
			}
			System.out.println();
		}
		
  • while 문으로 2~9단까지 구구단 출력
		int dan = 2;
		int count = 1;

		while( dan <= 9 ) {
			count = 1;
			while (count <= 9) {
				
				System.out.println( dan + "X" + count + "=" + dan * count);
				count++;
				
			}
			dan++;
			System.out.println();
		}
  • 출력 결과는 동일
2X1=2
2X2=4
2X3=6
2X4=8
2X5=10
2X6=12
2X7=14
2X8=16
2X9=18
.
.
.
9X1=9
9X2=18
9X3=27
9X4=36
9X5=45
9X6=54
9X7=63
9X8=72
9X9=81


6. break 문

개념

제어문의 블록을 빠져 나오는 기능 break;

  • 조건문 switch 문 에서도 사용 가능
    → 특정 case 문을 실행하고 switch 블록 바깥으로 제어를 이동

  • 반복문에서는 주로 조건문(if)와 같이 사용
    → 조건이 참이면, 반복 수행을 멈추고 탈출!

  • 여러 반복문이 중첩되어 있는 경우
    break 문이 포함되어 있는 반복문만 빠져 나옴


🧐 이름이 있는 break

  • 중첩된 for문에 이름을 설정한다면, break문으로 특정 for문을 종료 가능

		bk: for (int i = 1; i <= 10; i++) {
			System.out.println("<for문 시작>");

			for (int j = 1; j <= 10; j++) {
				System.out.println("(for문 2 시작)");
				
				System.out.println(j);
				System.out.println(i);

				if (j > i) {
					System.out.println("if문 내부");
					System.out.println(j);
					System.out.println(i);
					break bk;
				}
				System.out.println("-");
			}
			System.out.println("(for문 2 끝)"); // 이 코드는 실행되지 않음
		}
		System.out.println("<for문 끝>");
  • if 문 안에서 break 되는 bk 는 가장 바깥에 있는 for 문이다.

  • 두번째 for 문을 반복해서 실행하다가, 내부의 if 문에서 가장 바깥에 있는 반복문을 탈출하므로
    System.out.println("(for문 2 끝)"); 은 실행되지 않는다.

중첩반복문에 이름붙여서 break



7. continue 문

개념

continue 이후 코드는 실행 안해! 반복문 처음으로 돌아가!

  • 반복문에서는 주로 조건문(if)와 같이 사용
    → 조건이 참이면, 반복문 블럭 내부의 다른 코드를 수행하지 않고 처음으로 돌아감

  • break 와 동일한 점
    → 프로그램의 수행을 중단시킴

  • break 와 다른 점
    → continue 이후에 작성된 실행을 중단하는 것 뿐, break 처럼 반복문 자체를 종료시키지는 않음


📄 예

  • 3의 배수를 출력하는 예제
		int num;
		for( num = 1; num <= 10; num++) {
			
			if( (num % 3) != 0) continue; // println()을 실행하지 않고, for문을 다시 반복
			
			System.out.println(num); // 3의 배수만 출력  
			
		}
<출력>
3
6
9

🍑 while ▫ do while ▫ for 최종 정리 🍑

while

조건이 참인 동안 반복 수행
조건이 맞지 않으면? 수행되지 않음

사용할 때 👉 조건식의 결과 or 변수가 true false 값인 경우

do while

조건이 참인 동안 반복 수행
수행문 do먼저 수행하고 조건 체크!

사용할 때 👉 조건식의 결과 or 변수가 true false 값인 경우

for

초기화, 조건체크, 증감 순

사용할 때 👉 특정 수의 범위 및 횟수 관련 등 반복되는 경우, 배열과 함께 많이 사용



🤧 자바의 기초 중의 기초지만 핵심이라고 할 수 있는 제어문 정리가 끝났다!

profile
imaginative and free developer. 백엔드 / UX / DATA / 기획에 관심있지만 고양이는 없는 예비 개발자👋

0개의 댓글