반복문

김나영·2023년 6월 1일
0

Java 문법 종합반

목록 보기
4/21

1. for문

  • 특정 조건에 따라 연산을 반복해서 수행하고 싶을때 사용하는 문맥
  • for (초기값; 조건문; 증가연산) { (연산) } 형태로 사용
  • 특정 조건은 초기값조건문을 통해서 정의
  • 반복할때마다 값을 증가 시키려면 증가연산을 정의
  • 초기값조건문을 만족할때까지 (연산)을 수행하면서 회차마다 증가연산을 수행

ex)

public class W15 {
    public static void main(String[] args) {
        // for문
        //  (초기값 ; 조건문 ; 증가연산)
        for (int i = 0; i < 4; i++) {
            System.out.println(i + "번째 출력!");
        }
    }
}
  • 출력

    0번째 출력!
    1번째 출력!
    2번째 출력!
    3번째 출력!
    // i는 0부터 4보다 작은 수까지 반복해서 출력 되기 때문에 0,1,2,3만 출력됨


2. 향상된 for문

  • for 소괄호 안에 값이 3개나 들어가기 때문에 이걸 2개로 줄여주는 방법

  • 향상된 for 문은 연속된 변수목록을 출력할때 사용

  • for (변수 타입 변수 명 : 목록변수) { (연산) } 형태로 사용

  • 변수 타입변수 명 은 for 문안에서 연산을 수행할 변수를 정의

  • 목록변수는 값 여러개를 하나의 변수로 저장하고 싶을때 사용

ex)

 int[] numbers = {3, 6, 9, 12, 15};
      for (int number: numbers) {
          System.out.print(number + " "); // 3 6 9 12 15 출력
      }
  • int[ ]에서 [ ]는 배열을 뜻함

  • 3, 6, 9, 12, 15는 배열이므로 { }로 감싸줌

ex) for문을 사용할 때

int[] numbers = {3, 6, 9, 12, 15};
        for (int i = 0; i < numbers.length; i++) {
            System.out.print(numbers[i] + " ");
        } // 3 6 9 12 15 출력
  • numbers.length => 배열의 길이

  • 위의 ex)와 동일


3. while & do-while

  • for 문과 동일하게 특정 조건에 따라 연산을 반복해서 수행하고 싶을때 사용

  • 초기값 없이 조건문만 명시하여 반복

① while

  • while(조건문) { (연산) } 형태로 사용
    • 위처럼 while 문으로 사용하면 조건문을 만족해야지만 연산이 반복수행됩니다.
    • 한번 반복할때마다 조건문을 체크해서 조건문이 불만족(false) 이면 반복 중단

② do-while

  • do { (연산) } while(조건문) 형태로 사용
    • 위처럼 do-while 문으로 사용하면 최초 1회 연산수행 후 조건문을 체크하여 더 반복할지 결정
    • 반복하게 된다면 그 이후에는 한번 반복할때마다 조건문을 체크해서 조건문이 불만족(false) 이면 반복 중단

ex) while문

public class W16 {
    public static void main(String[] args) {
        int number = 0;
        while (number < 3) { //number < 3인 동안
            number++; // 0 -> 1 1 -> 2 2 -> 3
            System.out.println(number + "출력");
        }
    }
  • number에 ++가 붙어있기 때문에 0일 때 1, 1일 때 2, 2일 때 3이 출력됨

ex) do ~ while문

int number = 4;
do {
    // 이 로직을 먼저 수행
    System.out.println(number + "출력!");
}while (number < 3);  // 4출력!
  • number를 먼저 출력

  • number는 영원히 3보다 크기 때문에 while문 실행 X


4. break

  • break; 명령을 호출하면 가장 가까운 블럭의 for 문 또는 while 문을 중단 (또는 switch)

  • 반복문 안에서 break; 형태로 사용

ex)

int number = 0;
        while (number < 3) {
            number++;
            if (number == 2) {
                break;
            }
            System.out.println(number + "출력!");
        } // 1출력!
  • number = 0 -> while문에 의해 number에 1이 추가됨

  • number = 1이기 때문에 if문으로 가지 않고 그대로 출력됨

  • number = 1 -> while문에 의해 number에 1이 추가됨

  • number = 2이기 때문에 if문을 돌아 break;

  • break;이기 때문에 if문과 while문을 탈출함

ex)

for (int i = 0; i < 10; i++) {
            System.out.println("i:" + i);
            if (i ==2) {
                break; // i가 2일 때, 가장 바깥 반복문 종료
            }
            for (int j=0; j < 10; j++) {
                System.out.println("j:" + j);
                if (j == 2) {
                    break; // j가 2일 때, 안쪽 반복문 종료
                }
            }
        }
  • 출력

  • i = 0인 경우 그대로 출력

  • if문을 만족하지 않으므로 for문으로 넘어감

  • j = 0인 경우 그대로 출력

  • if문을 만족하지 않으므로 다시 for문(j)으로 넘어감

  • j = 2일 때 break이므로 for문을 빠져나와 위의 for문(i)으로 넘어감

  • 위 과정을 반복하다가 i = 2가 되면 반복문이 종료되어 밑의 for문(j)로 넘어가지 않음


5. continue

  • for 문 또는 while 문에서 해당 순서를 패스하고 싶을때 continue 명령을 사용

  • 반복문 안에서 continue; 형태로 사용

ex)

int number = 0;
        while (number < 3) {
            number++;
            if (number == 2) {
                continue;
            }
            System.out.println(number + "출력!");
        } // 1출력!, 3출력!
  • number = 0 -> while문에 의해 number = 1

  • 1은 if문에 충족하지 않으므로 그대로 출력

  • number = 1 -> while문에 의해 number = 2

  • if문을 만족하므로 continue

  • continue 되는 순간 다음 반복문으로 넘어감

  • number = 2 -> while문에 의해 number = 3

  • 3은 if문에 충족하지 않으므로 그대로 출력

  • number = 4 -> while문에 충족하지 않으므로 그대로 종료


6. 구구단 만들기

for (int i = 2; i <= 9 ; i++) { // 구구단의 첫 번째 수
      for (int j = 1; j <= 9 ; j++) { // 구구단의 두 번째 수
          System.out.println(i + "곱하기" + j + "는" + (i*j) + "입니다." );
            }
        }
  • 구구단은 2개의 숫자를 곱하는 것이기 때문에 for문을 2개 사용

  • 2단(2 X 1)부터 출력

  • 2단 ~ 9단까지 출력됨

Scanner sc = new Scanner(System.in);
int passNum = sc.nextInt(); // 출력을 제외할 구구단 수 합
        for (int i = 2; i <= 9 ; i++) { // 구구단의 첫 번째 수
            if (i == passNum) {
                continue;
            }
            for (int j = 1; j <= 9 ; j++) { // 구구단의 두 번째 수
                System.out.println(i + "곱하기" + j + "는" + (i*j) + "입니다." );
            }
        }
  • 출력을 제외할 값을 입력 받기 위해 Scanner 사용

  • 출력을 제외할 수가 i와 같아지면 continue

  • 구구단의 두 번째 수 for문으로 가지 않고 다시 구구단의 첫 번째 수 for문으로 넘어감

  • 9단까지 반복

  • ex) 2를 입력 받으면 2단을 제외한 나머지가 출력됨

  • ex) 3을 입력 받으면 3단을 제외한 나머지가 출력됨

0개의 댓글