점프 투 자바

SUADI·2022년 4월 12일

이번 챕터는 제어문이다. 제어문에는 if, switch, for, while, for each 등이 있다. 프로그래밍을 건축에 비유하자면, 자료형은 건축에 필요한 목재, 철근 등의 원자재와 같다면, 제어문은 건축물의 큰 골격과 같은 것이라고 한다.

5. 제어문

(1) if 문

		if (조건문) {
        	수행할 문장
        } else if(조건문) {
        	수행할 문장
        } else if(조건문) {
        	수행할 문장
        } else {
        	수행할 문장
        }

조건문은 참과 거짓을 판단하는 문장이고, 참이면 if문내의 문장을 수행한다.

// 예
        int money = 3000;
        boolean hasCard = true;
        if (money > 5000 || hasCard) {
        	System.out.println("택시타");
        }
        else {
        	System.out.println("걸어가");
        }

(2) switch / case 문

		switch(입력변수) {
        	case 입력값1: ...
                break;
        	case 입력값2: ...
                break;
        	case 입력값3: ...
                break;
                ...
        	defualt: ...
                break;                
        }

switch문은 if문과 비슷하지만 좀 더 정형화되어 있다.
입력 변수로 들어오는 값이 뭐냐에 따라 case를 나누어서 그 값에 해당하는 문장을 수행하고 case를 빠져나온다.(break) 전에 했던 캘린더 프로젝트에서도 포스팅 했듯이 case문 내의 break는 case문을 빠져나오는 문장이다. while문 내에 case문을 사용하여 break를 사용했다면 break는 while문을 빠져 나가는 것이 아니라 case문을 빠져나가는 문장이다.

(3) while 문

		while(조건문) {
        	수행문장
            ...
        }

조건문이 참인 동안 while문 내의 문장을 수행한다. 만약 조건문이 계속 참이라면 그것을 무한루프라고 한다. 무한루프는 프로그래밍에서 자주 쓰이는 개념이다.

		// 예시 : 1~10 중 홀수  출력
        int a=0;
        while (a<10) {
            a++;
            if (a % 2 == 0) continue;

            System.out.println(a); // 1,3,5,7,9
        }

여기서 continue는 while문의 맨 처음으로 돌아가게 해주는 문장이다. 이와 반대로 while문에서의 break는 루프를 빠져나가게 해주는 문장이다.

(4) for 문

for문도 while문과 유사한 반복문이다.

		for (초기값; 범위; 증감) {
        	수행문장
            ...
        }

for문의 조건문은 변수의 초기값을 설정하고, 변수의 범위와 변수가 증감하는 것을 설정해 놓고 그 조건문이 참인 동안만큼 for문이 반복된다.

(5) for each 문

		for (자료형 변수이름 : 반복할 객체) {
        	수행문장
            ...
        }

for each 문은 자료형 연습문제 1번에서 구글링을 통해 풀었던 풀이법에서 사용했었다. 그 때 당시에는 for each문이라는 이름 자체에 대해서는 몰랐고, 구글링을 하다가 '이렇게도 for문을 사용할 수 있구나' 까지 공부하고 끝이였는데 이제 그 떄 그것이 for each 문이였다는걸 알게 되었다. 이렇게 몰랐던걸 아는 재미가 생기니까 뿌듯하기도 하고 좋다. 연습문제 1번을 보면서 설명하자면,

		// 내 풀이
        HashMap<String, Integer> score = new HashMap<>();
        score.put("국어",80);
        score.put("영어",75);
        score.put("수학",55);

        int sum = 0;
        for (int i : score.values()) {
            sum += i;
        }
        System.out.println(sum/score.size());

자료형(type)은 int이고 변수이름은 i로 설정했다. 그리고 HashMap인 score의 value값들을 각각 i에 대입하여 for문을 반복시켰다.

0개의 댓글