Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java) If…Else 문 완벽 가이드 – 조건문 기초부터 실전 예제까지

프로그래밍을 하다 보면 특정 조건이 충족될 때만 코드가 실행되도록 작성해야 하는 경우가 자주 있습니다.

예를 들어, 이커머스 사이트에서 사용자가 배송지를 입력했을 때만 주문이 접수되도록 하고 싶을 수 있습니다. 또는 커피숍을 운영하면서 지난 일주일 동안 커피를 다섯 잔 이상 주문한 고객에게 할인 혜택을 제공하고 싶을 수도 있죠.

이럴 때 프로그래밍에서는 조건문(conditional statement)을 사용합니다. 조건문은 조건식이 참(true)인지 거짓(false)인지에 따라 특정 코드 블록을 실행하는 구문입니다. 자바에서는 if...else 문이 대표적인 제어 흐름(control flow) 문으로, 특정 조건이 충족될 때만 코드 블록을 실행할 수 있게 해줍니다.

이 글에서는 자바에서 if...else 문을 사용하는 방법을 살펴보고, 실제 자바 프로그램에서 활용되는 여러 예제도 함께 소개합니다.

자바 If 문

가장 기본적인 조건문은 if 문입니다. if 문은 주어진 표현식이 참인지 거짓인지 평가하고, 참일 때만 해당 코드를 실행합니다. 만약 표현식이 거짓으로 평가되면 프로그램은 if 블록을 건너뛰고 나머지 코드를 계속 실행합니다.

자바에서 if 문은 다음과 같이 작성합니다:

if (condition_is_met) {
	// Execute code
}

구조를 하나씩 살펴보겠습니다. if 문은 조건(condition)을 받습니다. 이 조건은 참 또는 거짓 값을 반환하는 불리언(boolean) 표현식입니다. 그리고 조건이 참으로 평가될 때 실행될 코드는 중괄호({}) 안에 작성합니다.

if 문 안의 코드는 들여쓰기를 하는 것이 관례입니다. 또한 자바의 다른 코드 줄과 달리, if 문 끝에는 세미콜론(;)을 붙이지 않는다는 점도 기억해 두세요.

예제를 통해 이것이 어떻게 동작하는지 확인해 보겠습니다. 우리가 커피숍을 운영 중이고, 지난 일주일 동안 커피를 다섯 잔 넘게 구매한 고객에게 10% 할인을 제공하고 싶다고 가정해 봅시다. 다음 코드로 고객이 할인 대상인지 확인할 수 있습니다:

public class CheckDiscount {
	public static void main(String[] args) {
		int coffees_ordered_in_last_week = 4;
		int discount = 0;

		if (coffees_ordered_in_last_week > 5) {
			discount = 10;
		}

		System.out.println("This customer is eligible for a " + discount + "% discount.");
	}
}

이 코드를 실행하면 다음과 같은 결과가 출력됩니다:

This customer is eligible for a 0% discount.

코드를 분석해 보겠습니다. 먼저 CheckDiscount라는 클래스를 선언하고, 이 프로그램의 전체 코드를 그 안에 담았습니다.

다음으로 coffees_ordered_in_last_week라는 변수를 선언해 지난 일주일간 고객이 주문한 커피 수를 저장했습니다. 그리고 고객이 받을 수 있는 할인율을 추적하는 discount 변수를 초기화했습니다.

그다음 줄에서는 coffees_ordered_in_last_week가 5보다 큰지 검사하는 if 문을 사용했습니다. 참이라면 고객은 10% 할인 대상이 되고, 거짓이라면 프로그램은 if 블록 안의 코드를 건너뜁니다.

이 예제에서 고객은 지난 일주일 동안 커피를 네 잔만 주문했기 때문에 discount = 10 코드는 실행되지 않습니다. 마지막으로 프로그램은 콘솔에 "This customer is eligible for a [X]% discount."라는 메시지를 출력합니다. 여기서 X는 프로그램이 판단한 할인율입니다.

자바 If Else 문

if 문만 사용하면 조건이 참일 때만 코드를 실행할 수 있습니다. 하지만 실무에서는 조건이 거짓일 때 다른 코드 블록을 실행해야 하는 경우가 더 많습니다.

else 문은 if 문 뒤에 작성하며 별도의 조건을 갖지 않습니다. else 문은 선택 사항(optional)이며, if 문의 조건이 거짓으로 평가될 때만 실행됩니다.

자바 if...else 문의 기본 문법은 다음과 같습니다:

if (condition_is_met) {
	// Execute code
} else {
	// Execute other code
}

앞선 예제를 이어서 설명해 보겠습니다. 이번에는 매주 토요일 모든 고객에게 5% 할인을 제공하는 프로모션을 진행한다고 가정해 봅시다. 오늘이 토요일이므로 모든 고객에게 5% 할인을 적용하려고 합니다. 단, 이 할인은 지난 일주일 동안 커피를 다섯 잔 넘게 주문하지 않은 고객에게만 적용됩니다. 다섯 잔을 초과해 주문한 고객은 이미 10% 할인 대상이기 때문입니다.

다음 프로그램을 사용하면 지난 일주일간 다섯 잔을 초과해 주문한 고객에게는 10% 할인을, 그 외 모든 고객에게는 5% 할인을 적용할 수 있습니다:

class CheckDiscount {
	public static void main(String[] args) {
		int coffees_ordered_in_last_week = 4;
		int discount = 0;

		if (coffees_ordered_in_last_week > 5) {
			discount = 10;
		} else {
			discount = 5;
		}

		System.out.println("This customer is eligible for a " + discount + "% discount.");
	}
}

코드 실행 결과는 다음과 같습니다:

This customer is eligible for a 5% discount.

이 코드는 첫 번째 예제와 동일한 방식으로 동작합니다. 다만 이번에는 else 문을 추가했다는 점이 다릅니다. else 블록은 coffees_ordered_in_last_week > 5 표현식이 거짓으로 평가될 때 실행됩니다. 이 예제에서 고객은 커피를 다섯 잔 넘게 주문하지 않았으므로 해당 표현식은 거짓입니다.

결국 프로그램은 else 블록 내부를 실행하여 discount 변수의 값을 5로 설정합니다. 따라서 프로그램이 고객의 할인율을 출력할 때 5%가 표시되는 것입니다.

자바 If Else If 문

여러 개의 조건을 순차적으로 평가하고, 참이 되는 조건에 따라 서로 다른 코드를 실행해야 하는 경우도 있습니다. 바로 이럴 때 if...else...if 문을 사용합니다. if...else...if 문은 첫 번째 조건을 검사한 뒤, 필요에 따라 이후 조건들을 차례대로 평가합니다.

자바 if...else...if 문의 기본 문법은 다음과 같습니다:

if (condition1_is_met) {
	// Run condition 1 code
} else if (condition2_is_met) {
	// Run condition 2 code
} else {
	// Run other code
}

if 문들은 위에서 아래 방향으로 순차적으로 평가됩니다. 표현식이 참으로 평가되는 순간 해당 블록의 코드가 실행되고, 나머지 조건은 더 이상 검사하지 않습니다. 어떤 표현식도 참이 아니라면 else 블록의 코드가 실행됩니다.

이번에는 지난 일주일 동안 열 잔 넘게 커피를 주문한 고객에게 15% 할인을 제공한다고 가정해 봅시다. 이런 고객들은 보통 친구나 직장 동료를 위해 대량 주문을 하는 단골이므로, 최대한 혜택을 통해 관계를 유지하고 싶은 대상입니다.

다음 코드를 사용하면 토요일 5% 할인, 다섯 잔 초과 주문 시 10% 할인에 더해 열 잔 초과 주문 시 15% 할인까지 모두 적용할 수 있습니다:

class CheckDiscount {
	public static void main(String[] args) {
		int coffees_ordered_in_last_week = 4;
		int discount = 0;

		if (coffees_ordered_in_last_week > 10) {
			discount = 15;
		} else if (coffees_ordered_in_last_week > 5) {
			discount = 10;
		} else {
			discount = 5;
		}

		System.out.println("This customer is eligible for a " + discount + "% discount.");
	}
}

코드를 실행하면 다음과 같은 결과가 출력됩니다:

This customer is eligible for a 5% discount.

참고: 위 예제에서는 더 엄격한 조건(> 10)을 먼저 검사했습니다. 만약 > 5 조건을 먼저 검사하면, 열 잔을 초과해 주문한 고객 역시 이미 > 5 조건을 만족하기 때문에 15% 할인 블록은 한 번도 실행되지 않습니다. if...else...if 문에서는 조건의 순서가 결과에 직접적인 영향을 미친다는 점을 꼭 기억하세요.

이 고객은 지난 일주일 동안 커피를 네 잔만 주문했기 때문에 else 블록이 실행된 것입니다. 만약 고객이 다섯 잔을 초과해 주문했다면 discount 변수는 10으로 설정되었을 것이고, 열 잔을 초과해 주문했다면 15로 설정되었을 것입니다.

마치며

정리하면, 자바의 if 문은 특정 조건이 참으로 평가될 때 코드 블록을 실행하는 데 사용됩니다. if...else 문은 if 문과 함께 사용되어 조건이 거짓일 때 다른 코드를 실행합니다. 또한 if...else...if 문을 사용하면 여러 개의 조건을 순차적으로 평가할 수 있습니다.

이 글에서는 예제와 함께 if, if...else, if...else...if 문을 사용해 자바 프로그램의 실행 흐름을 제어하는 방법을 알아보았습니다. 이제 여러분도 전문가처럼 자바 조건문을 자유롭게 활용할 준비가 되었습니다!