[자바] 기초문법정리-조건문(231229)

brand_mins·2023년 12월 29일

Java

목록 보기
30/47

1. 조건문

1) if, else

(1) if 문

  • 특정 조건이 참인지 확인하고 그 조건이 참일경우 특정 코드 블록을 실행
package cond;

public class If1 {

    public static void main(String[] args) {
        int age = 20;

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

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

    }
}

(2) else문

  • if문에서 만족하는 조건이 없을때 실행하는 코드
package cond;

public class If2 {

    public static void main(String[] args) {
        int age = 20;

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

2) else if

  • if문의 조건이 거짓일때 다음 조건을 검사하는 코드
package cond;

public class If3 {

    public static void main(String[] args) {
        int age = 14;

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

3) if문과 else if문

  • if와 else if를 함께 사용하는 것은 서로 연관된 조건만 해당
  • 독립 조건이라면 else if를 사용하지 않고 if문 따로 사용

(1) 문제

  • 아이템 가격이 10000원 이상일때 1000원 할인
  • 나이가 10살 이하일때 1000원 할인
  • 한 사용자가 여러 할인을 받으려면 독립적인 조건으로 if문만 작성
package cond;

public class If5 {

    public static void main(String[] args) {
        int price = 10000;
        int age = 10;
        int discount = 0;

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

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

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

만약, 동시에 사용한다면 무슨 문제가 발생할까? 하나만 적용됨

package cond;

public class If6 {

    public static void main(String[] args) {
        int price = 10000;
        int age = 10;
        int discount = 0;

        if(price >= 10000) {
            discount = discount + 1000;
            System.out.println("10000원 이상 구매, 1000원 할인");
        } else if(age<=10) {
            discount = discount + 1000;
            System.out.println("어린이 1000원 할인");
        } else {
            System.out.println("할인없음");
        }
        System.out.println("총 할인 금액 : " + discount + "원");

        if(true) System.out.println("if문에서 실행됨");
    }
}

(2) if문 중괄호 생략

  • 한줄만 사용했을경우 if문의 중괄호를 생략할 수 있다.
  • 하지만, 두 줄 이상은 사용 불가능하다
  • 따라서, 유지보수하거나 가독성이 좋은 코드를 만들기 위해서는 중괄호를 사용해주는 것을 권장함.

4) Switch문

  • if 문을 조금 더 편리하게 사용할 수 있는 기능
  • if문은 비교연산자를 사용하지만 switch문은 단순히 값이 같은지만 비교
package cond;

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;

            case 4:
                coupon = 4000;
                break;

            default:
                coupon = 500;
        }
        System.out.println("발급받은 쿠폰 " + coupon);
    }
}
  • switch문의 조건을 빠져나오기 위해서 반드시 break를 사용해주어야함.
  • 새로운 Switch문(자바 ver14)
package cond;

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;
        };
        System.out.println("발급받은 쿠폰 " + coupon);
    }
}
  • ->를 사용하였다.
  • 선택된 데이터를 반환할 수 있음.

5) 삼항 연산자

  • if문을 사용할 때 단순히 참과 거짓에 따라 특정한 값을 구함
package cond;

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);
    }
}
  • 위 코드를 삼항연산자를 통해서 개선하자면 다음과 같음.
package cond;

public class CondOp2 {

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

        String status = (age >= 18) ? "성인" : "미성년자";

        System.out.println("age = " + age + " status = " + status);
    }
}
  • 즉, 단순히 참과 거짓에 따라서 특정 값을 구하는 경우 삼항 연산자라고 불림.
  • ?: 연산자를 사용함.
  • 삼항연산자는 항이 3개라는 뜻. 조건, 참:조건식, 거짓:조건식
profile
IT 개발자가 되기 위한 기록

0개의 댓글