자바 공부 10 : 제어문 - while문, for문

친환경 개발자
|2024. 1. 27. 14:36

while문

- 조건문이 참인 동안 수행할 문장들을 반복하여 수행한다

 

 

- 구조 :

 

while (조건문) {

    <수행할 문장 1>;

    <수행할 문장 2>;

    ....

}

 

 

- break;   : 반복문을 빠져나감

- continue; : 반복문의 맨 처음(조건문)으로 돌아감

 

        /* 4-3 while 문  : 조건문이 참인 동안 수행할 문장을 반복 수행
        while (조건문) {
            <수행할 문장 1>;
            <수행할 문장2>;
            .....
        }
                                                                     */
        // 예제1
        int treeHit = 0;
        while (treeHit < 10) {
            treeHit += 1;   // treeHit++ 로도 표현 가능
            System.out.println(String.format("나무를 %d번 찍었습니다.", treeHit));
        }
        System.out.println("나무 넘어갑니다.");
        System.out.println();

        // 무한루프
        while (true) {
            System.out.println("Ctrl-C를 눌러야 빠져나갈 수 있습니다");
        }

        // break; : while문 강제로 멈춤

        int coffee = 10;
        int money = 300;

        while (money > 0) {
            System.out.println("돈을 받았으니 커피를 줍니다.");
            coffee--;
            System.out.println("남은 커피의 양은" + coffee + "입니다.");
            if (coffee == 0) {
                System.out.println("커피가 다 떨어졌습니다. 판매를 중지합니다.");
                break;
            }
        }
        System.out.println();

        // continue; : 어떤 조건을 검사해서 참이 아닌 경우 while문의 처음(조건문)으로 돌아감

        int a = 0;
        while (a < 10) {
            a++;
            if (a % 2 == 0) {
                continue;     // 짝수인 경우 조건문으로 돌아간다
            }
            System.out.println(a);   // 홀수만 출력된다
        }

 

 

 

 

for문

- 초깃값을 넣고, 조건문이 참일 때까지 값을 증가시키며 문장 반복

 

 

- 구조 :

 

for (초깃값; 조건문; 증갓값;) {

    <수행할 문장 1>;

    <수행할 문장 2>;

    ....

}

 

print와 println 차이 :

     print는 줄바꿈문자(\n) 사용 X   >>  줄 바꿈 없이 한 줄에 출력

     println은 줄바꿈문자(\n) 사용 O  >> 다음 줄로 넘어감

 

 

/*      4-4 for문 : while처럼 반복문에 사용
        for (초깃값; 조건문; 중간값) {
            ...
        }
                                                     */
        // 예제 1
        String[] numbers = {"one", "two", "three"};
        for(int i=0; i<numbers.length; i++) {
            System.out.println(numbers[i]);
        }
        System.out.println();

        // 예제 2
        int[] marks1 = {90, 25, 67, 45, 80};
        for (int i=0; i<marks1.length; i++) {
            if (marks1[i] > 60) {
                System.out.println((i+1)+"번 학생은 합격입니다.");
            } else {
                System.out.println((i+1)+"번 학생은 불합격입니다.");
            }
        }
        System.out.println();

        // continue 활용
        int[] marks2 = {90, 25, 67, 45, 80};
        for (int i=0; i<marks2.length; i++) {
            if (marks2[i] < 60) {
                continue;
            }
            System.out.println((i+1)+"번 학생 축하합니다. 합격입니다.");
        }
        System.out.println();

        // 이중 for문
        for (int i=2; i<10; i++) {
            for (int j=1; j<10; j++) {
                System.out.print(i*j + " "); // print는 줄 바꿈(\n) 포함하지 않고 출력
            }
            System.out.println();   // 줄 바꿔주는 역할
        }

 

 

for each문

- 구조 :

 

for (type 변수명: iterate) {

    body-of-loop

}

 

※ type에는 자료형 입력,

   변수명에는 변수로사용할 변수의이름

    iterate에는 루프를 돌릴 객체 입력

※ 콜론(:)을 기준으로 좌우의 자료형은 일치해야 한다!

 

/*              4-5 for each문
        for (type 변수명: iterate) {
            body-of-loop
        }
        type : 자료형 / iterate : 루프를 돌릴 객체
        변수명에 루프를 돌릴 객체에서 1개씩 순차적으로 대입됨
        ** type 자료형과 iterate 자료형은 일치해야함!
        *** 따로 반복 횟수를 명시적으로 주는 것이 불가능하고, 한 단계씩 순차적으로 반복할 때만 사용 가능
                                                        */

        // 예제 1
        String[] numbers2 = {"one", "two", "three"};
        for(String number: numbers2) {
            System.out.println(number);
        }
        System.out.println();

        // 예제 2
        ArrayList<String> numbers3 = new ArrayList<>(Arrays.asList("one", "two", "three"));
        for (String number: numbers3) {
            System.out.println(number);
        }