JAVA

조건문

seungmin576 2024. 12. 9. 16:54

주오진 조건에 따라 다른 문장을 선택할 수 있도록 프로그래밍하는 것이다.

예를 들어  '나이가 8살 이상이면 학교에 다닌다.'  라는 문장에서 '나이' 가 조건이 된다.

위의 예를 조건문과 유사한 형태로 쉽게 표현하자면

만약(나이가 8살 이상이라면){
	학교에 다닌다.
}
그렇지 않다면{
	학교에 다니지 않는다.
}

이런 형태가 된다.

 

 

 

 

 

if문과 if-else 문

조건문의 가장 단순한 형식인 if문이다.

우리말로 해석하면 '만약 ~이라면'이다.

if(조건식){
	수행문; //조건식이 참일 경우에 이 문장을 수행
}

if문을 사용하는 형태를 간단히 나타내면 위와 같다.

주어진 조건식이 '참' 일 경우에 중괄호 안에 있는 문장을 수행한다.

조건식에는 결과가 참, 거짓으로 판별되는 식이나 참, 거짓의 값을 가진 변수, 상수를 사용할 수 있다.

연산의 결과가 참, 거짓이 되는 관계 연산자를 자주 사용한다.

 

 

'만약 나이가 8살이상이면 학교에 다닌다.' 라는 문장을 if문으로 나타내면 다음과 같다

int age = 10;
if(age >= 8){
	System.out.println("학교에 다닙니다.");
}

 

 

  • 조건식을 만족하는 경우와 만족하지 않는 경우를 모두 나타낼 떄는 if-else문을 사용한다.

if-else문은 '만약 ~라면, 그렇지 않다면'으로 해석할 수 있다.

주어진 조건식이 '참' 이라면 if문 블록 안에 있는 문장을 수행하고 '거짓'일 경우에는 else문 블록 안에 있는 문장을 수행한다.

따라서 else 문에는 '조건식' 을 사용하지 않는다.

 

if(조건식){
	수행문1; //조건식이 참일 경우에 이 문장을 수행
}
else{
	수행문2; //조건식이 거짓일 경우에 이 문장을 수행
}

 

 

 

 

 

if-else if-else문

하나의 상황에 조건이 여러 개인 경우에는 if-else if-else 문으로 표현할 수 있다.

if(조건식1){
	수행문1; //조건식1이 참일 경우에 수행함
}
else if(조건식2){
	수행문2; //조건식2이 참일 경우에 수행함
}
else if(조건식3){
	수행문3; //조건식3이 참일 경우에 수행함
}
else{
	수행문4; //위의 조건이 모두 해당하지 않는 경우에 수행함
}
수행문5; //if-else if-else문이 끝난 후 수행 함

 

 

놀이 공원 입장료 계산 예시

취학 전 아동(8세 미만) 천원, 초등학생(14세 미만) 이천원, 중.고등학생(20세 미만) 이천오백원, 그 이상 삼천원일 때

public class IfExample1 {
    public static void main(String[] args){
        int age = 9;
        int charge;

        if(age < 8) {
            charge = 1000;
            System.out.println("취학 전 아동입니다.");
        } else if (age < 14) {
            charge = 2000;
            System.out.println("초등학생입니다.");
        } else if (age < 20) {
            charge = 2500;
            System.out.println("중, 고등학생입니다.");
        }else {
            charge = 3000;
            System.out.println("성인입니다.");
        }
        System.out.println("입장료는 " + charge + "원입니다.");
    }

}

첫번쨰 else if 문을 보면 8살 이상 14살 미만이라 age >= 8 && age < 14를 해야할 것 같지만 단순히 age < 14라 했다.

그 이유는 if-else if-else문은 하나의 조건을 만족하면 다른 조건은 더 이상 비교하지 않기 때문이다.

즉 선행 조건에서 age < 8을 비교했기 떄문에 이 조건식에 의해 모두 처리된 것이다.

따라서 다음 조건식인 age < 14는 당연히 8살 이상인 경우를 포함하므로 age < 14라고만 써도 된다.

 

 

 

switch-case문

if-else if-else문으로도 조건식을 구현 가능하지만

조건식의 결과가 문자열 값 또는 정수이고 그 값에 따라 수행되는 경우가 각각 다른 경우에 사용하면 코드가 깔끔하고 가독성이 좋다.

 

예를 들어 경기에 참가한 선수의 순위에 따라 매달 색을 정하는 프로그램이 있다고 치면

 

  • if-else if-else문의 경우
if(rank == 1){
	medalColor == 'G';
}
else if(rank == 2){
	medalColor == 'S';
}
else if(rank == 3){
	medalColor == 'B';
}
else{
	medalColor == 'A';
}

조건이 많아지면 중괄호가 많이지고 코드 또한 길어진다.

 

  • switch-case 문의 경우
switch(rank){
case 1 : medalColor = 'G';
	break;
case 2 : medalColor = 'S';
	break;
case 3 : medalColor = 'B';
	break;
default : medalColor = 'A';
}

주어진 값이 어떤 case에도 해당하지 않을 경우 defalt 문이 수행된다.

default문은 생략가능하다.

break문은 switch-case문의 수행을 멈추고 빠져나가도록 만들어준다.

 

 

주로 switch-case문을 사용하는 경우

주로 조건이 하나의 변수 값이나 상수 값으로 구분되는 경우에 사용한다.

조건이 복잡한 식으로 이루어진다면(ex 10 < age < 20) switch-case문이 적합하지 않다.

하나의 값으로 조건을 비교할 수 있을 때 사용된다. (ex 학점 A,B,C)

 

 

case문 동시에 사용하기

여러 경우를 동시에 처리할 때도 자주 사용한다.

만약 각 달의 날짜를 출력한다하면

1, 3, 5, 7, 8, 10, 12월은 31일까지이고

4 ,6, 9, 11월은 30일까지이다

2월은 편의상 28일까지라 할때 다음과 같이 case문을 동시에 사용할 수 있다.

case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : day = 31;
	break;
case 4 : case 6 : case 9 : case 11 : day = 30;
	break;
case 2 : day = 28;
	break;

 

 

case문에 문자열 사용하기

자바 7부터는 switch-case문의 case 값에 정수 값뿐 아니라 문자열도 사용할 수 있다.

public class SwitchCase {
    public static void main(String[] args){
        String medal = "Gold";

        switch(medal) {
            case "Gold" :
                System.out.println("금메달입니다.");
                break;
            case "Silver" :
                System.out.println("은메달입니다.");
                break;
            case "Bronze" :
                System.out.println("동메달입니다.");
                break;
            default :
                System.out.println("메달이 없습니다.");
                break;
        }
    }
}

메달 색을 의미하는 Gold, Silver, Bronze 문자열을 case 문에 직접 사용한 예시이다.

 

 

'JAVA' 카테고리의 다른 글

continue문, break문  (0) 2024.12.10
반복문  (0) 2024.12.09
비트 연산자, 연산자 우선순위  (0) 2024.12.09
연산자  (0) 2024.12.06
형 변환  (1) 2024.12.06