LANGUAGE/JAVA

[JAVA] 삼항연산자

진심스테이크 2019. 7. 12. 08:51

 

삼항연산자 : if문을 비교적 짧고 간결하게 작성하는 방법

- 형태 : (조건문) ? 참일 때 값 : 거짓일 때 값

 // 예시 1
 int a = 10;
 int b;

 if (a < 0) {
     b = 3;
 } else {
     b = 4;
 }

 // 삼항연산자
 b = (a < 0) ? 3 : 4;


 // 예시 2
 if (a > 0) {
     System.out.println("호랑이");
 } else {
     System.out.println("코끼리");
 }

 // 삼항연산자
 System.out.println((a > 0) ? "호랑이" : "코끼리");

 

- 사용 예제

  -> 어떤 값을 넣든 중간 값을 찾는 알고리즘

//중간 값 구하기
        
        int a = 1, b = 2, c = 3;
//        int a = 1, b = 3, c = 2;
//        int a = 2, b = 1, c = 3;
//        int a = 2, b = 3, c = 1;
//        int a = 3, b = 1, c = 2;
//        int a = 3, b = 2, c = 1;

        /*
        int mid;
        if (a > b) { // a는 최대 아니면 중간
            if (a > c) { // a는 최대
                if (b > c) {
                    mid = b;
                } else {
                    mid = c;
                }
            } else {
                mid = a;
            }
        } else { // a는 최소 아니면 중간
            if (a < c) { // a는 최소
                if (b > c) {
                    mid = c;
                } else {
                    mid = b;
                }
            } else {
                mid = a;
            }
        }
        */
        
        
        /*
        int mid;
        if (a > b) {
            if (a > c) {
                mid = Math.max(b, c);
            } else {
                mid = a;
            }
        } else {
            if (a < c) {
                mid = Math.min(b, c);
            } else {
                mid = a;
            }
        }
        */
        
        
        // 최적화
        int mid;
        if (a > b) {
            mid = (a > c)? Math.max(b, c) : a;
        } else {
            mid = (a < c)? Math.min(b, c) : a; 
        }
        
        
        /*
        // 보기 어려움
        int mid;
        mid = (a > b)? ((a > c)? Math.max(b, c) : a): ((a < c)? Math.min(b, c) : a);
        */
        
        System.out.println(mid);