본문 바로가기

2022 여름방학 자바 스터디

[이것이 자바다] Ch04. 조건문과 반복문

4.1. 코드 실행 흐름 제어

제어문의 종류에는 조건문과 반복문이 있다.
제어문 블록 내부에는 또 다른 제어문을 사용할 수 있다.

4.2. 조건문 (if문, switch문)

4.2.1. if문

if (조건식) {
	실행문;
    실행문;
    ...
}

- 중괄호 블록은 여러 개의 실행문을 하나로 묶기 위해 작성함

- 만약, 실행해야 할 문장이 하나 밖에 없다면 생략 가능

- 그러나 중괄호 블록을 생략하지 않는 것을 추천함 → 가독성, 버그 발생 방지

4.2.2. if-else문

if (조건식) {
	실행문;
} else {
	실행문;
}

- 두 블록 중 어느 한 블록의 내용만 실행하고 전체 if문을 벗어나게 됨

4.2.3. if-else if-else문

if (조건식1) {
	실행문1;
} else if (조건식2) {
	실행문2;
} else {
	실행문3;
}

- else if 문의 수는 제한이 없음

- 여러 개의 조건식 중 true가 되는 블록만 실행하고 전체 if문을 벗어남

 

📝 임의의 정수 뽑기

- Math.random() 메소드 활용

- 예시) 주사위 번호 하나 뽑기, 로또 번호 하나 뽑기

int num = (int)(Math.random() * 6) + 1;  // 주사위
int num = (int)(Math.random() * 45) + 1  // 로또

4.2.4. 중첩 if문

if (조건문1) {
	if (조건문2) {
    	실행문;
    } else {
    	실행문;
    }
} else {
	실행문;
}

4.2.5. switch문

- 변수가 어떤 값을 갖느냐에 따라 실행문이 선택됨

- char타입의 변수도 사용 가능

- 자바7부터는 String 타입의 변수도 올 수 있음

- switch문은 괄호 안의 값과 동일한 값을 갖는 case로 가서 실행문을 실행함

- 만약 괄호 안의 값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 실행함

- default는 생략 가능

switch(변수) {
	case var1:
    	실행문;
        break;
    case var2;
    	실행문;
        break;
    default:
    	실행문;
}

4.3. 반복문 (for문, while문, do-while문)

- for문은 반복 횟수를 알고 있을 때, while문은 조건에 따라 반복할 때 주로 사용

4.3.1. for문

- 코드를 절감하고 간결하게 만듦

- 개발 시간과 오류를 줄일 수 있음

for(초기화식; 조건식; 증감식){
	실행문;
}

 

- 초기화식의 역할은 조건식과 실행문, 증감식에서 사용할 변수를 초기화하는 역할

- 초기화 식이 필요없을 경우 다음과 같이 생략 가능

int i = 1;

for(; i<=100; i++){
	실행문;
}

 

- 어떤 경우에는 초기화 식이 둘 이상 있을 수 있고, 증감식도 둘 이상 있을 수 있음(쉼표로 구분함)

for(int i=0, j=100; i<=50 && j>=50; i++, j--) {
	실행문;
}

 

📍for문 작성 시 주의

- 초기화 식에서 루프 카운트 변수를 선언할 때 부동소수점 타입을 사용하면 안 됨.

- 0.1은 float 타입으로 정확하게 표현할 수 없기 때문에, 실제 더해지는 값은 0.1보다 약간 큰 값

- 따라서 아래와 같은 경우 루프가 9번만 실행됨 (예상 : 10번)

public static void main(String[] args) {
    for(float x=0.1f; x<=1.0f; x+=0.1f) {
        System.out.println(x);
    }
}

4.3.2. while문

- 조건식이 true일 경우에 계속해서 반복함

while (조건식) {
	실행문;
}

 

- 조건식에는 boolean 변수나 true/false를 산출하는 어떤 연산식이든 올 수 있음

- 만약 조건식에 true를 사용하게 되면 무한루프에 빠지게 됨

4.3.3. do-while문

- 조건식에 의해 반복실행된다는 점에서 while문과 동일함

- while문은 시작할 때부터 조건식을 검사하여 블록 내부를 실행할지 결정하지만,

- do-while문은 블록을 먼저 실행시킨 뒤 결과에 따라 반복 실행을 계속할지 결정함

4.3.4. break문

- 반복문을 실행 중지시킬 때 사용하는 break문

 

- 만약 반복문이 중첩되어 있을 경우, break문은 가장 가까운 반복문만 종료하고 바깥쪽 반복문은 종료시키지 않음

- 중첩된 반복문에서 바깥쪽 반복문까지 종료시키고 싶을 경우,

- 바깥쪽 반복문에 라벨(이름)을 붙이고 "break 라벨;"을 사용하면 됨

public static void main(String[] args) throws Exception {
    Outter:for(char upper = 'A'; upper <= 'Z'; upper++) {
        for(char lower='a'; lower<='z'; lower++) {
            System.out.println(upper + "-" + lower);
            if (lower == 'g' ) {
                break Outter;
            }
        }
    }
    System.out.println("프로그램 실행 종료");
}

4.3.5. continue문

- 반복문을 종료하지 않고 반복을 계속 수행함 (건너뜀)

- 아래와 같이 홀수는 건너뛰고 짝수만 출력하는 코드

public static void main(String[] args) {
    for(int i=1; i<=10; i++) {
        if (i%2 != 0) {
            continue;
        }
        System.out.println(i);
    }
}