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원 더 할인을 받는다. 그래서 총 2000원 까지 할인을 받을 수 있다.
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
를 사용해서 어떤 문제가 발생하는지 확인해보자.
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
문을 빠져나온다. 따라서 사용자는 나머지 할인을 놓치게 된다.if
문을 각각 사용할 지, if
와 else 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
문의 일부라는 것이 명확하지 않을 수 있다.