JAVA

JAVA - 조건문

jonghyeon6084 2023. 12. 17. 16:23
728x90

1. if문 - if, else

if문 :  특정 조건이 참인지 확인하고, 그. 조건이 참(true) 일 경우 특정 코드 블록을 실행한다.

int age = 20; // 사용자 나이

    if (age >= 18) { 
        System.out.println("성인입니다.");
    }

    if (age < 18) { 
        System.out.println("미성년자입니다.");
    }

실행 결과 : 성인입니다.

 

else문 : if문에서 만족하는 조건이 없을 때 실행하는 코드를 제공

int age = 20;
if (age >= 18){
    System.out.println("성인입니다.");
} else {
    System.out.println("미성년자입니다.");
}

실행 결과 : 성인입니다.

 

2. if문2 - else if

예시 문제

 -당신은 연령에 따라 다른 메시지를 출력하는 프로그램을 작성해야 한다. 이 프로그램은 `int age` 라는 변수를 사용해야 하며, 연령에 따라 다음의 출력을 해야 한다.

 

7세 이하일 경우: "미취학"

8세 이상 13세 이하일 경우: "초등학생"

14세 이상 16세 이하일 경우: "중학생"

17세 이상 19세 이하일 경우: "고등학생"

20세 이상일 경우: "성인"

 

먼저 배웠던 if문만 써서 이렇게 한다면 아래와 같이 표현할 수 있다.

int age = 14;

if (age <= 7){
    System.out.println("미취학");
}
if(age >= 8 && age <= 13) { //8~13: 초등학생
    System.out.println("초등학생");
}
if(age >= 14 && age <= 16) { //14~16: 중학생
    System.out.println("중학생");
}
if(age >= 17 && age <= 19) { //17~19: 고등학생
    System.out.println("고등학생");
}
if(age >= 20) { //20~: 성인
    System.out.println("성인"); 
}

하지만 불필요한 단점이 있다.

  • 불필요한 조건 검사
  • 코드 효율성

else if문을 쓴 코드는 다음과 같다.

int age = 14;
    if(age <= 7) { //~7: 미취학
        System.out.println("미취학");
    } else if(age <= 13) { //8~13: 초등학생
        System.out.println("초등학생");
    } else if(age <= 16) { //14~16: 중학생
        System.out.println("중학생");
    } else if(age <= 19) { //17~19: 고등학생
        System.out.println("고등학생");
    } else { //20~: 성인
        System.out.println("성인"); }
}

 

3. if - if문과 else if

 - if문에 else if를 함께 사용하는 것은 서로 연관된 조건일 때 사용한다. 그런데 서로 관련이 없는 독립 조건이면 else if를 사용하지 않고 if문을 각각 따로 사용해야 한다.

 

예시문제

 - 온라인 쇼핑몰의 할인 시스템을 개발해야 한다. 한 사용자가 어떤 상품을 구매할 때, 다양한 할인 조건에 따라 총 할인 금액이 달라질 수 있다. 각각의 할인 조건은 다음과 같다.

 

 - 아이템 가격이 10000원. 이상일 때, 1000원 할인.

 - 나이가 10살 이하일 때 1000원. 할인

 

이 할인 시스템의 핵심은. "한 사용자가 동시에 여러 할인을 받을 수 있다는 점"이다.
예를 들어, 10000원짜리 아이템을 구매할 때 1000원 할인을 받고, 동시에 나이가 10살 이하이면 추가로 1000원 더 할인을 받는다. 그래서 총 20002000원까지 할인을 받을 수 있다.

 

int price = 10000;
int age = 10;
int discount = 0;

if (price >= 10000) {
    discount += 1000;
    System.out.println("10000원 이상 구매시 1000원 할인");
}

if (age <= 10) {
    discount += 1000;
    System.out.println("어린이 1000원 할인");
}

System.out.println("총 할인 금액 : " + discount + "원");

 

4. switch

 - if문은 비교 연산자를 사용할 수 있지만, switch문은 단순히 값이 같은지만 비교할 수 있다.

int grade = 2;

    int coupon;
    switch (grade){
        case 1:
            coupon = 1000;
            break;
        case 2:
            coupon = 2000;
            break;
        case 3:
            coupon = 3000;
            break;
        default:
            coupon = 500;
    }
    System.out.println("발급받은 쿠폰 : " + coupon);
}

 

switch문에선 break가 매우 중요한데 이 것을 활용해서 위 코드에서 2,3등급도 같이 3000원을 준다고 해보자.

 

int grade = 2;
int coupon;

switch (grade){
    case 1:
        coupon = 1000;
        break;
    case 2:
    case 3:
        coupon = 3000;
        break;
    default:
        coupon = 500;
}
System.out.println("발급받은 쿠폰 : " + coupon + "원");

 

if문 vs switch문

 - switch문의 조건식을 넣는 부분을 잘 보면 x > 10 과 같은 참 거짓의 결과가 나오는 것이 아니라, 단순히 값만 넣을 수 있다.

 - switch문은 조건식이 특정 case와 같은지만 체크할 수 있다.(문자도 가능)

 - 반면, if문은 참 거젓의 결과가 나오는 조건식을 자유롭게 적을 수 있다.(x > 10, x == 10)

 

>> switch문 없이 if문만 사용해도 된다. switch문을 사용하면 if문 보다 간결한 코드를 작성할 수 있다고 한다.

 

 

 

라고 했지만, 그렇게 간결해보진 않는다.

 

그래서 JAVA14부터 새로운 switch문이 나왔다.

int grade = 2;

int coupon = switch (grade) {
    case 1 -> 1000;
    case 2 -> 2000;
    case 3 -> 3000;
    default -> 500;
};
System.out.println("발급받은 쿠폰 : " + coupon);

 

기존 switch 문과 다른 점은??

 >> -> 를 사용

 >> 선택된 데이터를 반환할 수 있다.

 

5. 삼항 연산자

int age = 18;
String status = (age >= 18) ? "성인" : "미성년자";
System.out.println("age = " + age + ", status = " + status);

 

 - 삼항 연산자는 항이 3개라는 뜻이다. 조건 / 참 표현식 / 거짓 표현식

 - 조건에 만족하면 참 표현식이 실행되고, 조건에 만족하지 않으면 거짓 표현식이 실행된다.