Java - 조건문과 반복문

박종호·2024년 1월 29일

Java

목록 보기
4/8

🥊 if문

if문

인생을 살면서 많은 상황에서 조건에 따른 선택을 하게됩니다. 예를 들면 이런것이죠

프로그램의 코드를 작성하는 것도 위와 같이 조건을 따지는 작업을 반복적으로 수행하는 것입니다.
쇼핑몰에서 만약 회원 등급이 VIP등급 이상일 경우 포인트를 10,000원 넣어주는 로직을 작성한다고 가정해봅시다. 회원 등급을 조건절로 수행하여 조건이 맞을 경우에는 원하는 작업을 수행하도록 코드를 작성해야겠죠. 이때 if문으로 코드를 작성할 수 있습니다.

if (조건식) {
	실행문;
	실행문;
	...
}
if (회원등급 >= VIP) {
	point += 10000  // 포인트
}

만약 회원등급이 VIP 이상일 경우는 10,000 포인트를 주고, VIP등급 미만일 경우에는 3,000 포인트를 준다고 가정해봅시다. 아래와 같은 코드가 나오겠죠.

if (회원등급 >= VIP) {
	point += 10000
}

if (회원등급 < VIP) {
	point += 3000
}

위 코드와는 다른 방법으로 조건절을 사용할 수도 있는데요, 바로 if-else문 입니다.

if-else문

if-else문은 if문의 조건식이 true이면 if문의 블록이 실행되고, false이면 else 블록이 실행됩니다.

if (조건식) {
	실행문;
	실행문;
	...
} else {   // if문의 조건식이 거짓일 때 실행되는 코드 블록
	실행문;
	...
}

위의 예시에서 회원등급이 VIP등급 이상일 경우와 VIP등급 미만일 경우는 정확하게 반대 조건절이기 때문에 if-else문을 사용하여 코드를 작성해도 되겠죠.

if (회원등급 >= VIP) {
	point += 10000
} else {
	point += 3000
}

if / else if / else

조건문이 여러개인 if문인 경우에는 if - else if - else 문으로 조건절을 처리할 수 있습니다.

if (조건식) {
	실행문;
	실행문;
	...
} else if (조건식) {
	실행문;
	...
} else {   // 앞의 if, else if 조건식 모두 false일 경우 실행되는 else 코드블록
	실행문;
	...
}

다음의 주어진 로직을 코드로 작성해봅시다.

  • 점수가 90점 이상이면 “등급은 A입니다” 출력
  • 점수가 80 ~ 89점 사이일 경우 “등급은 B입니다” 출력
  • 점수가 70 ~ 80점 사이일 경우 “등급은 C입니다” 출력
  • 70점 미만의 점수일 경우 “등급은 D입니다” 출력
public class IfElseExample {
	public static void main(String[] args) {		
		int score = 93;

		if (score >= 90) {
			System.out.println("등급은 A입니다");
		} else if (score >= 80 && score < 90) {
			System.out.println("등급은 B입니다");
		} else if (score >= 70 && score < 80) {
			System.out.println("등급은 C입니다");
		} else {
			System.out.println("등급은 D입니다");
		}
	}
}

자바에서는 && 연산의 경우 앞의 조건이 false이면 어차피 그 결과도 false이기 때문에 두 번째 조건은 묻지도 따지지도 않습니다.

😼 switch/case문

switch/case문은 if문과 비슷한 조건-판단문 입니다. 하지만 switch문은 if문처럼 조건식이 true일 때 블록 내부를 실행하는게 아니라, 변수가 어떤 값을 갖느냐에 따라 실행문이 선택됩니다.

switch(입력변수) {
    case 입력값1: 
				 실행문1; 
				 ...
         break;
    case 입력값2: 
				 실행문2; 
				 ...
         break;
    ...
    default: ...
				 디폴트_실행문;
         break;
}

참고로 입력변수의 자료형은 byte, short, char, int, enum, String만 가능합니다.

그럼 다음으로 switch/case문을 가장 잘 설명해주는 다음의 예를 봅시다.

public class MonthSwitchCaseExample {
    public static void main(String[] args) {
        int month = 3;
        String monthString;
        switch (month) {
            case 1:
                monthString = "January";
                break;
            case 2:
                monthString = "February";
                break;
            case 3:
                monthString = "March";
                break;
            case 4:
                monthString = "April";
                break;
            case 5:
                monthString = "May";
                break;
            case 6:
                monthString = "June";
                break;
            case 7:
                monthString = "July";
                break;
            case 8:
                monthString = "August";
                break;
            case 9:
                monthString = "September";
                break;
            case 10:
                monthString = "October";
                break;
            case 11:
                monthString = "November";
                break;
            case 12:
                monthString = "December";
                break;
            default:
                monthString = "Invalid month";   // 유효하지 않은 범위의 값을 입력받았을 때 예외처리
                break;
        }
        System.out.println(monthString);
    }
}


하나만 걸려라
switch문의 입력값이 만약 6이면 case 6: 에 해당하는 코드가 수행되면서 monthString값에 “June”이 셋팅되고 break 문을 빠져나오면서 switch 문은 끝이 납니다. 그리고 System.out.println으로 monthString 값을 출력하겠죠.

만약 switch문의 입력값이 case로 정의된 1~12 사이의 값이 아니라면 default: 구문을 실행합니다.

이렇게 말이죠.

코드에서 month는 3 이므로, 결과는 다음과 같겠죠.

March

위의 코드와같이 입력값이 정형화 되어있다면 if문 보다는 switch/case문을 사용하는것이 더욱 코드 가독성이 좋습니다. if문과 비슷한 듯 다른 switch/case문도 실무에서 많이 사용하니 꼭 알아두세요.

한가지 더, 만약에 case문 끝에 있는 break 명령어를 붙이지 않는다면 어떻게될까요?

생각해봅시다…

case 끝에 break가 붙어있는 이유는 다음 case문을 실행하지 말고 switch문을 빠져나가기 위함 입니다. 말 그대로 브레이크를 거는 행위를 합니다. break가 없다면 다음 case가 연달아 실행되는데, 이때에는 case 값과는 상관없이 실행됩니다.

public class SwitchCaseExample {
	public static void main(String[] args) {
		int time = (int)(Math.random() * 4) + 8;            // 8~11 사이 정수 뽑기
		System.out.println("현재시간 " + time + "시");

		switch (time) {
			case 8:
				System.out.println("출근합니다");
			case 9:
				System.out.println("회의를 합니다");
			case 10:
				System.out.println("업무를 합니다");
			default:
				System.out.println("점심 먹을 준비 합니다");
		}
	}
}
현재시간 10시
업무를 합니다
점심 먹을 준비 합니다

for문

for문은 어떤 작업이 반복적으로 실행되도록 할 때 사용되며, 반복문의 종류로는 for문, while문, do-while문이 있습니다. 이번장에서는 for문을 먼저 익혀보겠습니다.

for문

for문은 실행문을 반복적으로 수행할 때 사용합니다.
예를 들어 다음 예시를 보면, 1부터 5까지 차례대로 출력하는 코드죠.

System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);

위 코드를 for문을 사용하여 변경할 수 있습니다.

for (int i = 1; i <= 5; i++) {
    System.out.println(i);
}

그럼 for문의 구조를 알아보도록 할게요.
for문은 세미콜론(;)을 구분자로 세 부분으로 나누어집니다.

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

for문의 수행 흐름은 다음과 같습니다.

profile
https://www.linkedin.com/in/penameyo/

0개의 댓글