[Java] if문 3 - if문과 else if문

코드 속의 "진돌"·2023년 12월 27일
0
post-thumbnail

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

✏️ 예시

// 예시1. if-else 사용 : 서로 연관된 조건이어서 하나로 묶을 때
if (condition1) {
	// 작업1 수행
} else if (condition2) {
	// 작업2 수행
}

// 예시2. if 각각 사용 : 독립 조건일 때
if (condition1) {
	// 작업1 수행
}
if (condition2) {
	// 작업2 수행
}

예시 1은 작업1, 작업2 둘 중 하나만 수행된다. 그런데 예시2는 조건만 맞다면 둘 다 수행될 수 있다.

if문에 여러 조건이 있다고 항상 if-else로 묶어서 사용할 수 있는 것은 아니다. 조건이 서로 영향을 주지 않고 각각 수행해야 하는 경우에는 else if문을 사용하면 안되고, 대신에 여러 if문을 분리해서 사용해야 한다.

여러 독립적인 조건을 검사해야 하는 경우가 그런 상황의 대표적인 예시이다. 즉, 각 조건이 다른 조건과 연관되지 않고, 각각의 조건에 대해 별도의 작업을 수행해야 할 때 이런 상황이 발생한다.

✅ 문제


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

각각의 할인 조건은 다음과 같다.

  • 아이템 가격이 10000원 이상일 때 1000원 할인
  • 나이가 10살 이하일 때 1000원 할인

이 할인 시스템의 핵심은 한 사용자가 동시에 여러 할인을 받을 수 있다는 점이다.

예를 들어, 10000원짜리 아이템을 구매할 때 1000원 할인을 받고, 동시에 나이가 10살 이하이면 추가로 1000원 더 할인을 받는다. 그래서 총 2000원 까지 할인을 받을 수 있다.

✏️ If5

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 + "원");
  }
}

✏️ 실행 결과

  • 이 코드에서는 각각 독립된 if문이 있다. 따라서 해당하는 모든 할인을 적용한다.
  • 만약 else if를 쓰면, 첫 번째로 충족하는 조건만 할인이 적용되고 나머지는 무시된다. 따라서 사용자는 나머지 할인을 놓칠 수 있다.

if문을 사용해야 하는 곳에 else if를 사용해서 어떤 문제가 발생하는지 확인해보자.

✏️ If6 - else if문 적용

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 + "원");
  }
}

✏️ 실행 결과

  • 첫 번째로 충족되는 조건인 1000원 할인만 적용되고, if문을 빠져나온다. 따라서 사용자는 나머지 할인을 놓치게 된다.

✅ 정리


if문을 각각 사용할 지, ifelse if를 함께 묶어서 사용할지는 요구사항에 따라 다르다. 둘의 차이를 이해하고 적절하게 사용하면 된다.

✏️ 참고 - if문 {} 중괄호 생략

다음과 같이 if문 다음에 실행할 명령이 하나만 있을 경우에는 {}중괄호를 생략할 수 있다. else if, else도 마찬가지이다

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

다음과 같은 경우에는 두번째 문장은 if문과 무관하다. 만약 둘 다 if문 안에 포함하려면 {}를 사용해야 한다.

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

만약 둘다 if문 안에 포함하려면 다음과 같이 {}를 사용해야 한다.

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

프로그래밍 스타일에 따라 다르겠지만, 일반적으로는 if문의 명령이 한개만 있을 경우에도 다음과 같은 이유로 중괄호를 사용하는 것이 좋다.

  • 가독성 : 중괄호를 사용하면 코드를 더 읽기 쉽게 만들어 준다. 조건문의 범위가 명확하게 표시되므로 코드의 흐름을 더 쉽게 이해할 수 있다.
  • 유지보수성 : 중괄호를 사용하면 나중에 코드를 수정할 때 오류를 덜 발생시킬 수 있다. 예를 들어, if문에 또 다른 코드를 추가하려고 할 때, 중괄호가 없으면 이 코드가 if문의 일부라는 것이 명확하지 않을 수 있다.
profile
매일 성장하는 주니어 개발자의 기록📝

0개의 댓글