살다 보면 우리 주변에는 정말 많은 '만약(if)'이 있습니다. 마트가 영업 중이라면 장을 볼 수 있고, 그렇지 않다면 들어갈 수 없죠. 정오가 되면 점심시간입니다.
프로그램도 우리처럼 '만약'에 크게 의존합니다. 프로그래밍에서 이러한 '만약'은 조건문(conditional statement)이라고 부릅니다. 조건문을 사용하면 특정 조건이 충족되는지에 따라 코드 블록을 실행하거나 실행하지 않을 수 있습니다.
이 가이드에서는 자바에서 if문이 어떻게 작동하는지, 그리고 왜 유용한지 살펴보겠습니다. 예제를 통해 직접 확인해 보세요.
if문이란?
때로는 프로그램에서 특정 코드가 실행되지 않기를 원할 때가 있습니다. 바로 이럴 때 조건 로직이 필요합니다. if문을 사용하면 표현식을 평가하고, 그 결과에 따라 코드 블록을 실행할 수 있습니다.
if문은 불리언(Boolean) 표현식이 참(true)인지 거짓(false)인지 판단합니다. 표현식이 참이면 코드가 실행되고, 거짓이면 아무 일도 일어나지 않습니다. 이런 이유로 if문을 제어 흐름문(control flow statement)이라고도 부릅니다.
새 자바 파일을 열고 다음 코드를 붙여 넣어 보세요:
class MenuPrices {
public static void main(String[] args) {
String order = "Ham Sandwich";
if (order.equals("Ham Sandwich")) {
System.out.println("The price of a " + order + " is $1.95.");
}
System.out.println("Done");
}
}
이 코드에서는 "Ham Sandwich"라는 문자열 값을 담는 order 변수를 정의했습니다. 그다음 if문을 사용해 order가 "Ham Sandwich"와 같은지 확인합니다. 같다면 햄 샌드위치의 가격이 출력됩니다.
개발 환경에서 이 자바 프로그램을 실행하면 다음과 같은 결과가 출력됩니다:
The price of a Ham Sandwich is $1.95. Done
지정한 주문이 "Ham Sandwich"이므로 해당 코드 줄이 실행된 것입니다. 이번에는 주문을 치킨 마요 샌드위치로 변경해 보겠습니다:
String order = "Chicken Mayo Sandwich";
if (order.equals("Ham Sandwich")) {
System.out.println("The price of a " + order + " is $1.95.");
}
System.out.println("Done");
이번에는 코드가 "Done"만 출력합니다. if문 안의 내용이 실행되지 않은 이유는 조건(order가 "Ham Sandwich"와 같음)이 충족되지 않았기 때문입니다.
if else문
if문은 유용하지만, 조건이 참으로 평가되지 않을 때 다른 작업을 수행하고 싶다면 어떻게 해야 할까요? 바로 이럴 때 이름 그대로의 자바 if else문이 등장합니다.
예를 들어, 입력한 주문을 찾을 수 없을 때 프로그램이 This item is not on the menu.(메뉴에 없는 항목입니다)를 출력하길 원한다고 해보겠습니다. 코드에 else 블록을 추가하면 됩니다:
String order = "Chicken Mayo Sandwich";
if (order.equals("Ham Sandwich")) {
System.out.println("The price of a " + order + " is $1.95.");
} else {
System.out.println("This item is not on the menu.");
}
System.out.println("Done");
표현식이 거짓으로 평가되면 else문의 내용이 실행됩니다. 프로그램을 저장하고 실행하면 다음과 같은 결과를 볼 수 있습니다:
This item is not on the menu. Done
주문을 다시 "Ham Sandwich"로 변경하면 앞선 예제에서 받았던 출력 결과가 다시 나타납니다.
else if문
if..else문은 두 가지 가능한 결과, 즉 조건이 충족되는 경우와 충족되지 않는 경우만 처리할 수 있습니다. else if문을 사용하면 더 많은 조건을 평가할 수 있습니다.
프로그램에서 세 가지 다른 샌드위치를 확인하고 싶다고 해보겠습니다. 각 가격은 다음과 같습니다:
- 햄 샌드위치: $1.95
- 치킨 마요 샌드위치: $2.20
- 훈제 연어 샌드위치: $3.00
프로그램이 모든 메뉴를 처리할 수 있도록 else if문을 추가해 보겠습니다:
String order = "Chicken Mayo Sandwich";
if (order.equals("Ham Sandwich")) {
System.out.println("The price of a " + order + " is $1.95.");
} else if (order.equals("Chicken Mayo Sandwich")) {
System.out.println("The price of a " + order + " is $2.20.");
} else if (order.equals("Smoked Salmon Sandwich")) {
System.out.println("The price of a " + order + " is $3.00.");
} else {
System.out.println("This item is not on the menu.");
}
System.out.println("Done");
이제 프로그램은 여러 가지 출력을 반환할 수 있습니다. 위 프로그램을 실행하면 다음과 같은 결과를 얻습니다:
The price of a Chicken Mayo Sandwich is $2.20. Done
order 변수의 값을 "Smoked Salmon Sandwich"로 변경하고 프로그램을 다시 실행해 보겠습니다:
The price of a Smoked Salmon Sandwich is $3.00. Done
이제 프로그램이 여러 조건을 평가할 수 있게 된 것을 확인할 수 있습니다. 원하는 만큼 조건을 추가할 수도 있습니다. 실제로 카페를 운영한다면 판매하는 샌드위치 하나당 하나씩, 열 가지 조건을 평가하고 싶을 수도 있습니다.
마무리 (그리고 도전 과제)
if문을 사용하면 프로그램의 흐름을 더 효과적으로 제어할 수 있습니다. if문 안의 코드는 지정된 조건이 참일 때만 실행됩니다. else if문으로 여러 조건 중 하나가 충족되는지 확인할 수 있고, else문으로 어떤 조건도 충족되지 않을 때 수행할 작업을 지정할 수 있습니다.
도전할 준비가 되셨나요? 학생의 점수를 기반으로 시험 성적을 계산하는 프로그램을 작성해 보세요. 성적 구간은 다음과 같습니다:
- 85점 이상: A
- 75점 이상: B
- 65점 이상: C
- 50점 이상: D
- 50점 미만: F
이제 여러분도 프로처럼 자바 if문을 작성할 준비가 되었습니다!