half✨

#8. Java의 조건문에 대해 알아보자! 본문

개발/Java

#8. Java의 조건문에 대해 알아보자!

하프 2022. 11. 12. 00:40

안녕하세요! 하프입니다😋

이 글에서는 드디어 Java의 제어문 중, 조건문에 대해 알아보려고 합니다! 제어문부터는 코딩을 처음 접하시는 분들은 어렵게 느껴질 수 있습니다. 저도 그랬었구요... 그래서 제가 책에 있는 코드 예제와 함께 최대한 이해하기 쉽게 글을 써보려고 합니다! 파이팅!!

이 글은 <Do it! 자바 프로그래밍 입문> 책을 읽고 이해한 내용을 바탕으로 작성되었습니다😉

 

1. 조건문이 뭔가요?

조건문이란 주어진 조건이 참인지, 거짓인지에 따라서 다른 과정을 수행할 수 있도록 프로그래밍하는 것입니다. '만약 나이가 8살 이상이면 학교에 다닌다' 라는 문장에서는 '나이' 가 조건이 된다고 설명할 수 있습니다! 나이가 8살인지 아닌지에 따라 학교에 다니는지, 안 다니는지가 결정되는 것이니까요!

자바에서는 이러한 조건문을 if문, if-else문 등으로 표현할 수 있는데요, 같이 알아보러 갑시다🚗

 

2. if문

if문은 조건문 중에서 가장 단순한 형식입니다. if를 우리말로 해석하면 '만약 ~이라면' 인데, 자바의 if문으로는 '만약 ~이라면 ~을 수행해줘!' 라고 프로그래밍할 수 있습니다.

/*
if(조건식) {
	(수행문)
}
*/

int age = 8;
if(age >= 8) {
	System.out.println("학교에 다닙니다.");
}

if문의 예제인데요, age라는 정수형 변수에 8을 선언합니다. if문에서는 age에 있는 값이 8보다 크거나 8과 같은지 확인한 다음, 이 조건식을 만족하는 경우 아래에 있는 출력문(System.out.println)을 수행합니다. 

특별출연 하프!

이런 과정입니다. if 옆의 (괄호) 안에 있는 식은 조건식이고, 조건식에서 참(true)이 나왔을 때는 밑에 있는 수행문을 수행하는 것이죠! 여기서는 age가 8으로 조건식을 만족하기 때문에, 수행문인 "학교에 다닙니다" 출력이 수행될 겁니다!

 

3. if-else문

if문이 조건식을 만족하는 경우에 무엇을 수행할지 나타내는 것이었다면, if-else문은 조건식을 만족하는 경우뿐만 아니라 만족하지 않을 경우 무엇을 수행할지도 나타낼 수 있습니다. 조건식에서 참이 나왔을 때는 if문 밑의 수행문을 수행하고, 거짓이 나왔을 때는 else문 밑의 수행문을 수행합니다.

/*
if(조건식) {
	(수행문 1);
}
else {
	(수행문 2);
}
*/

int age = 7;
if(age >= 8) {
	System.out.println("학교에 다닙니다.");
}
else {
	System.out.println("학교에 다니지 않습니다.");
}

if-else문의 예제입니다! 이번에는 age에 7이 들어갔습니다. if문에서 age가 8보다 크거나 같을 경우 "학교에 다닙니다."를 출력하고, 그렇지 않다면 "학교에 다니지 않습니다."를 출력하라고 나타내고 있습니다.

이런 과정입니다. 여기서는 age가 7이기 때문에 조건식을 만족하지 않네요? 그러면 else 밑에 있는 조건식이 수행됩니다.학교에 다니지 않습니다 가 출력되겠네요!

참고로 if-else문은 조건 연산자로도 구현할 수 있답니다! 혹시 조건 연산자를 아직 모르신다면 이 글의 마지막 부분에서 확인하실 수 있습니다🥰

 

4. if-else if-else문

만약 하나의 상황에서 조건을 여러 개 비교해야 하는 상황이라면 어떻게 해야 할까요? 조건이 여러 개라면 if문이나 if-else문으로는 비교하기 힘듭니다. 그래서 if-else if-else문을 사용합니다! if와 else if, else문으로 구성됩니다.

if(조건식 1) {
	(수행문 1);
}
else if(조건식 2) {
	(수행문 2);
}
else if(조건식 3) {
	(수행문 3);
}
else {
	(수행문 4);	// 위의 조건을 모두 만족하지 않을 때 수행
}

(수행문 5);	// if-else if-else문이 끝난 뒤 수행

if-else if-else문은 이런 형식입니다. 책에 있는 예제로 사용법을 알아보도록 할게요!

놀이 공원의 입장료를 계산해야 하는 상황입니다. 취학 전 아동(8살 미만)은 1000원, 초등학생(14살 미만)은 2000원, 중고등학생(20살 미만)은 2500원, 그 이상은 3000원이라고 가정하고 계산 프로그램을 구현해 볼까요?

int age = 9;
int charge;

if(age < 8) {
	charge = 1000;
}
else if(age < 14) {
	charge = 2000;
}
else if(age < 20) {
	charge = 2500;
}
else {
	charge = 3000;
}

System.out.println("입장료 : " + charge);

짜잔! 입장료를 계산하는 코드입니다. 먼저 if에서 age가 8 미만이라면 charge는 1000, 그 조건을 만족하지 않는다면 아래의 else if로 넘어가서 age가 14 미만인지 확인합니다. 이렇게 조건을 비교하면서 조건식을 만족한다면 수행문을 실행하고 비교가 끝납니다. if-else if-else(또는 if-else if)문은 하나의 조건을 만족하면 다른 조건은 더 이상 비교하지 않기 때문이죠!

if-else if문, if-if문의 차이가 있나요?
→ 앞서 설명해드렸듯이 if-else if문은 하나의 조건을 만족하면 다른 조건은 비교하지 않고 다음 수행문으로 넘어갑니다. 하지만 if-if문은 모든 조건을 비교하기 때문에 원하지 않는 결과가 나올 수 있어요!
→ 하나의 조건을 만족하면 더 이상 비교할 필요가 없는 코드(나이가 몇 살인지 비교)는 if-else if문을 사용하시면 됩니다!

 

5. switch-case문

switch-case문 역시 하나의 상황에서 여러 개의 조건을 비교해야 하는 상황에 사용하는데요, 조건식의 결과가 정수 또는 문자열 값이고, 그 값에 따라 수행되는 결과가 다른 경우에 사용할 수 있답니다! 물론 if-else if문을 사용할 수도 있겠지만, switch-case문을 사용하면 코드가 더 간결해지는 장점이 있습니다.

switch(조건) {
	case 값1 : 수행문 1;
    			break;
   	case 값2 : 수행문 2;
    			break;
 	default: 수행문 3;
}

switch-case문은 이런 형식입니다. 조건의 결과에 따라 case에 있는 수행문을 수행하고, 만약 값이 case의 어느 부분에도 해당하지 않는다면 default문의 수행문을 수행합니다. default문이 필요하지 않다면 생략할 수 있어요! 또한 break문이 있는데, break문은 switch-case문의 수행을 멈추고 빠져나가도록 합니다. 첫 번째 case에서 조건을 만족했다면 그 case의 수행문을 실행하고 switch-case문을 나가도록 하는 것입니다!

int ranking = 1;
char medalColor;

switch(ranking) {
	case 1: medalColor = 'G';
    		break;
	case 2: medalColor = 'S';
    		break;
	case 3: medalColor = 'B';
    		break;
	default:
    		medalColor = 'A';
}

책에 있는 예제입니다. 순위에 따라 선수에게 수여하는 메달 색을 정하는 프로그램이고, 순위에 들지 못하면 'A'값을 부여합니다. ranking의 값에 따라 메달 색을 정하는데, 여기서는 ranking이 1이므로 medalColor는 G가 되겠네요! 이후에는 break문으로 switch-case를 빠져나갑니다. switch-case문에서 break문의 역할은 굉장히 중요한데요, break문을 쓰지 않으면 첫 번째 case를 만족하더라도 switch-case문을 빠져나오지 않아서 default문에 있는 'A' 값이 나오게 됩니다. 따라서 switch-case문을 사용할 때는 꼭 break를 잊지 말고 써주세요! case문에는 정수뿐만 아니라 문자열도 사용할 수 있습니다.

 

case문은 여러 개를 동시에 사용할 수도 있습니다!

case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31;
		break;
case 4: case 6: case 9: case 11: day = 30;
		break;
case 2: day = 28;
		break;

이런 식으로 말이죠! 1월, 3월... 12월은 31일까지 있고, 4월, 6월... 11월은 30일까지, 2월은 28일까지 있는 것을 구분하는 프로그램입니다.

 

다양한 조건문의 사용법에 대해 알아봤는데, 이해가 잘 되시나요? 최대한 이해하기 쉽도록 나름대로 열심히 썼습니다. 설명이 이해가 되지 않으시더라도 코드를 직접 따라하면서 실행 결과를 확인하시면 더 이해가 쉽게 될 것 같아요! 😊 다음 글에서는 자바의 반복문에 대해서 알아볼게요!