Switch

황상익·2024년 3월 18일

Inflearn JAVA

목록 보기
5/61
public class Switch {
    public static void main(String[] args) {
        int grade = 2;

        int coupon;

        if (grade == 1){
            coupon = 1000;
        } else if (grade == 2) {
            coupon = 2000;
        } else if (grade == 3) {
            coupon = 3000;
        } else {
            coupon = 5000;
        }

        System.out.println("발급 받은 쿠폰" + coupon);
    }
}

위 코드를 switch문으로 변경해보자

public class Switch2 {
    public static void main(String[] args) {
        int grade = 2;

        int coupon;

        switch (grade) {
            case 1:
                coupon = 1000;
                break;

            case 2:
                coupon = 2000;
                break;

            case 3:
                coupon = 3000;
                break;

            default:
                coupon = 5000;
        }

        System.out.println(coupon);
    }
}

둘 차이점을 비교 하자면, if문은 비교 연산자를 사용 할 수 있지만, switch문은 단순히 값이 같은지만 비교 가능

switch (조건식) {
 case value1:
 // 조건식의 결과 값이 value1일 때 실행되는 코드
 break;
 case value2:
 // 조건식의 결과 값이 value2일 때 실행되는 코드
 break;
 default:
 // 조건식의 결과 값이 위의 어떤 값에도 해당하지 않을 때 실행되는 코드
 }

조건식 결과 값이 어떤 case의 값과 일치하면 case 해당 값 실행
break는 탈출 => 없으면 case이후 모든 case들이 순서대로 다 실행
default는 조건식의 결과 값이 모든 case 값과 일치하지 않을때 실행

break문 없으면?
2,3등급은 동일한 쿠폰을 주고 싶다면?

public class Switch3 {
    public static void main(String[] args) {
        int grade = 2;

        int coupon;

        switch (grade) {
            case 1:
                coupon = 1000;
                break;

            case 2:
            case 3:
                coupon = 3000;
                break;

            default:
                coupon = 5000;
        }

        System.out.println(coupon);
    }
}

switch문은 조건식이 특정 case와 같은지 check 할 수 있다.

+) 새로운 switch문 개발... (어색하다)

public class Switch4 {
    public static void main(String[] args) {
        int grade = 2;

        int coupon = switch (grade){
            case 1 -> 1000;
            case 2 -> 2000;
            case 3 -> 3000;
            default -> 500;
        };
    }
}

삼항연산자

public class CondOp1 {
    public static void main(String[] args) {
        int age = 18;
        String status;

        if (age >= 18){
            status = "성인";
        } else {
            status = "미성년자";
        }

        System.out.println("age " + age + " status " + status);
    }
}

단순히 참 거짓에 따라서 값을 구하는 경우 삼항연산자 또는 조건 연산자라 불리는 ?: 연산자를 사용

public class CondOp2 {
    public static void main(String[] args) {
        int age = 18;
        String status = (age >= 18) ? "성인" : "미성년자";
        System.out.println("age " + age + " status " + status);
    }
}

삼항 연산자

(조건) ? 참_표현식 : 거짓_표현식

삼항 연산자는 항이 3개. 조건, 참, 거짓
조건에 만족하면 참 표현식이 실행, 만족하지 않으면 거짓 표현식이 실행

조건, switch, 삼항연산자 연습문제

public class ScoreEx {
    public static void main(String[] args) {
        int score = 85;

        if (score >= 90){
            System.out.println("학점은 A");
        } else if (score >= 80){
            System.out.println("B");
        } else if (score >= 70){
            System.out.println("C");
        } else if (score >= 60){
            System.out.println("D");
        } else {
            System.out.println("F");
        }
    }
}
public class DistanceEx {
    public static void main(String[] args) {
        int distance = 25;

        if (distance <= 1){
            System.out.println("도보를 이용하세요");
        } else if (distance <= 10){
            System.out.println("자전거를 이용하세요");
        } else if (distance <= 100){
            System.out.println("자동차 이용하세요");
        } else {
            System.out.println("비행기 이용하세요");
        }
    }
}
public class ExchangeRateEx {
    public static void main(String[] args) {
        int dollar = 10;

        if (dollar < 0){
            System.out.println("잘못된 금액입니다");
        } else if (dollar == 0){
            System.out.println("환전할 금액이 없습니다.");
        } else {
            int won = dollar * 1300;
            System.out.println("환전 금액은 " + won + " 원 입니다");
        }
    }
}
public class MoveRateEx {
    public static void main(String[] args) {
        double rating = 7.1;

        if (rating <= 9){
            System.out.println("어바웃 타입을 추천");
        }

        if (rating <= 8){
            System.out.println("토이스토리를 추천");
        }

        if (rating <= 7){
            System.out.println("고질라 추천");
        }
    }
}
public class GradeSwitchEx {
    public static void main(String[] args) {
        String grade = "B";

        switch (grade){
            case "A":
                System.out.println("탁월한 성적");
                break;

            case "B":
                System.out.println("좋은 성과");
                break;

            case "C":
                System.out.println("준수한 성과");
                break;

            case "D":
                System.out.println("향상이 필요합니다");
                break;

            case "F":
                System.out.println("불합격");
                break;

            default:
                System.out.println("잘못된 학점");
        }
    }
}
public class CondOpEx {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        int max = (a > b) ? a : b;
        System.out.println("더 큰 숫자는 " + max);
    }
}
profile
개발자를 향해 가는 중입니다~! 항상 겸손

0개의 댓글