본문 바로가기

프로그래밍 언어/JAVA

JAVA 입문 - 조건문

지난 글: [프로그래밍 언어/JAVA] - JAVA 입문 - 비트 연산자

 

조건문이란?

조건문이란 주어진 조건에 따라 다른 문장을 선택할 수 있도록 프로그래밍하는 것을 만한다.

 

if문과 if-else문

더보기

조건문의 가장 단순한 형식은 if문이다. if문은 '만약 ~이라면'으로 해석할 수 있다.

if문을 사용하는 형태를 간단히 나타내면 아래와 같다.

if(조건식) {
	수행문;	//조건식이 참일 경우에 이 문장을 수행
}
더보기

주어진 조건식이 참일 경우에 중괄호 안에 있는 문장을 수행한다. 

조건식에는 결과가 참, 거짓으로 판별되는 식이나 참, 거짓의 값을 가진 변수, 상수를 사용할 수 있다.

연산의 결과가 참, 거짓이 되는 관계 연산자를 자주 사용한다.

 

조건식을 만족하는 경우와 그렇지 않는 경우를 모두 나타낼 때는 if-else문을 사용한다.

if-else문은 '만약 ~이라면, 그렇지 않다면'으로 해석할 수 있다.

주어진 조건식이 참이면 if문 블록 안에 있는 문장을, 거짓이면 else문 블록 안에 있는 문장을 수행한다.

따라서 else문에는 '조건식'을 사용하지 않는다. 밑은 if else문의 예시다.

출력 결과

 

 

if-else if-else문

더보기

방금은 어떤 상황에서 하나의 조건을 만족하는 경우와 그렇지 않은 경우를 배웠다.

이번에는 하나의 상황에 조건이 여러 개인 경우를 표현할 수 있는 if-else if-else를 배울 것이다.

간단한 문법을 표현하면 아래와 같다.

if(조건식1) {
	수행문1; //조건식이1이 참일 경우에 수행
}
else if(조건식2) {
	수행문2; //조건식2가 참일 경우에 수행
}
else if(조건식3) {
	수행문3; //조건식3이 참일 경우에 수행
}
else {
	수행문4; //위의 조건이 모두 해당하지 않는 경우에 수행
}
수행문5; 	  //if-else if-else문이 끝난 후 수행
더보기

 

if-else if문과 if-if문의 차이

출력 결과

if-else if문은 하나의 조건을 만족하면 나머지 조건을 비교핮 않고 다음 수행문으로 넘어간다.

하지만 if문으로만 이루어진 코드는 조건마다 각각 비교하기에 아래와 같이 원하지 않는 출력 결과가 나온다.

출력 결과

위의 코드에서 보면 score가 94이므로 이미 if(score >= 90) 조건문에서 학점이 A로 결정되었다.

그런데 그 다음 비교문이 else if문이 아닌 if(score >= 80) 조건문이라 또 비교를 하고, 

결과 값이 참이므로 위처럼 원하지 않는 출력 결과가 나온다.

따라서 코드를 작성할 때 하나의 상황에 여러 조건을 비교하는 경우에는 if-else if문으로 구현해야한다.

그래야 하나의 조건을 만족하면 그렇지 않은 경우를 더 이상 비교하지 않는다.

 

조건문과 조건 연산자

더보기

if-else문은 지난 시간에 배운 조건 연산자로도 구현할 수 있다.

 

if-else문 → 조건 연산자 예시

두 코드 중 if-esle문으로 구현한 코드가 가독성은 더 좋지만 간단한 조건문이고 선택이 두 가지만 있는

경우에는 종종 조건 연산자도 사용한다.

 

switch-case문

더보기

조건문을 구현할 때 if문을 사용하면 번거로운 경우가 있다. 

조건이 많아지면 중괄호가 많아지고 코드 또한 길어진다. 

조건식의 결과가 정수 또는 문자열 값이고 그 값에 따라 수행되는 경우가 각각 다른 경우에는

위처럼 switch-case문으로 구성하는 것이 코드도 깔끔하고 가독성도 좋다.

case문에는 여러 문장이 있어도 { }를 여러번 사용하지 않는다.

 

case : ~break; 까지가 조건에 해당하는 문장이다. floor 값이 1이면 case 1의 코드가 수행되고

floor 값이 2면 case 2, floor 값이 3이면 case 3의 코드가 수행된다.

 

case문 동시에 사용하기

case문은 여러 경우를 동시에 처리할 때도 자주 사용한다. 

각 달의 날짜를 출력하는 예제를 생각해보면 1, 3, 5, 7, 8, 10, 12월은 31일까지이고,

4, 6, 9, 11월은 30일까지이다. 그러면 밑처럼 열두 달을 case문 조건에 하나씩 넣어서

코딩 할 수 있을 것이다.

case 1 : day = 31;
		break;
case 2 : day = 28;
		break;
case 3 : day = 31;
		break;
case 4 : day = 30;
		break;
...
case 12 : day = 31:
		break;
더보기

위 코드를 살펴보면 case문의 값은 다르지만 수행문이 같은 경우가 반복된다.

1, 3, 5, 7, 8, 10, 12월은 모두 day = 31; 인 것처럼 말이다.

이런 경우는 밑과 같이 case문을 동시에 사용할 수 있다.

case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : day =31;
		break;
더보기

 

switch-case문에서 break문의 역할

break문은 switch-case문의 수행을 멈추고 빠져나가도록 만든다.

switch-case문에서 break문을 쓰지 않으면 밑과 같이 된다.

출력 결과

첫 번째 case 조건을 만족했지만 break문이 없어서 switch-case문에서 빠져나오지 않는다.

따라서 잇따라 나오는 모든 문장까지 수행되어서 출력 결과가 이렇게 되었다.

switch-case문에서는 조건에 맞는 수행문을 수행한 후에 switch-case문을 빠져 나올 수 있도록

break문을 꼭 사용해야한다.

 

참고 서적: 자바 프로그래밍 입문 - 박은석

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

JAVA 입문 - 객체 지향 프로그래밍과 클래스  (0) 2022.05.04
JAVA 입문 - 반복문  (2) 2022.05.03
JAVA 입문 - 비트 연산자  (4) 2022.05.02
JAVA 입문 - 항과 연산자  (8) 2022.05.02
JAVA 입문 - 형 변환  (0) 2022.05.01