728x90
조건문이란?
- 조건문이란 말 그대로 주어진 조건에 따라 다른 문장을 선택할 수 있도록 프로그래밍하는 것을 말합니다.
- 기본적인 구조는 다음과 같습니다. if (조건) { 참일 때 결과 } else { 거짓일 때 결과 }
if 문과 if-else 문
- if 문은 조건문의 가장 대표적인 형식입니다.
- if 문은 주어진 조건식이 '참'일 경우 중괄호 안에 있는 문장을 수행합니다.
if (조건식) {
수행문;
}
- 조건식에는 결과가 참, 거짓으로 판별되는 식 혹은 참, 거짓의 값을 가지는 변수&상수를 사용할 수 있습니다.
- 조건식에는 연산의 결과가 참, 거짓이 되는 관계 연산자를 자주 사용합니다.
- 조건식을 만족하는 경우와 만족하지 않는 경우를 모두 나타낼 때는 if-else 문을 사용합니다.
if (조건식) {
수행문1; // 조건식이 참일 경우 이 문장을 수행
} else {
수행문2 ; // 조건식이 거짓일 경우 이 문장을 수행
}
- 순서도는 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 문을 반복해서 표현해도 결과 값은 똑같을 까요? 결론부터 말하면 결과는 다르게 출력됩니다. 조건식 1을 만족하지 않고 조건식 2를 만족하는 상황을 if 문 만을 사용하면 표현할 수 없습니다.
조건문과 조건 연산자
- 앞 포스팅에서 배운 조건 연산자(? :)로도 if-else 문을 구현할 수 있습니다.
if (a > b) {
max = a;
} else {
max = b;
}
위의 if-else 문을 조건 연산자로 표현하면 아래와 같이 한 줄로 표현 가능하다
max = (a > b) ? a : b;
- 둘 다 장단점이 있지만 보통 if else 문이 가독성이 좋기 때문에 자주 사용합니다. 다만 조건 연산자는 아주 간편하게 작성할 수 있으므로 간혹 사용하기도 합니다.
Switch-case 문
- 조건문을 구현할 때 if 문을 사용하면 번거로운 경우가 있습니다. 아래와 같이 조건이 많은 경우에 특히 그렇습니다.
- 어떤 경우에 switch-case 문을 사용할까요? 주로 조건이 하나의 변수 값이나 상수 값으로 구분되는 경우 사용합니다.
- switch 문에서 조건으로 실수형 데이터를 사용할 수 없습니다 (float).
- switch 문에서 break 문을 사용하지 않을 경우 case 가 조건에 해당하는 순간 이후의 모든 코드가 실행되도록 설계되어 있으므로 원하는 결과가 출력되지 않습니다.
if (조건식1) {
수행문1;
} else if(조건식2) {
수행문2;
} else if(조건식3) {
수행문3;
} else {
수행문4;
}
Switch(조건) {
case 값1 : 수행문1;
break;
case 값2 : 수행문2;
break;
case 값3 : 수행문3;
break;
default : 수행문4;
}
case문을 동시에 사용할 수 있다.
- 예를 들어 매월 마지막 날짜를 출력하는 case문을 만들어야 한다면
switch(month) {
case 1 : day = 31;
break;
case 2 : day = 28;
...
case 12 : day = 31;
break;
}
- 이 경우에 1월, 3월, 5월, 7월은 모두 day = 31; 값을 가집니다. 이런 경우에 case문을 동시에 사용할 수 있습니다.
case 1 : case 3 : case 5 : case 7 : ... case 12 : day = 31;
switch-case 문에서 break 문의 역할?
switch(month) {
case 1 : day = 31;
case 2 : day = 28;
...
case 12 : day = 31;
}
- break 문은 switch-case 문의 수행을 멈추고 빠져나가도록 만듭니다. 위와 같이 break 문을 사용하지 않으면 어떻게 될까요?
- 모든 case 가 day = 31; 이 대입됩니다. 왜냐하면 중간에 빠져나가지 않고 모든 case 가 실행되어 마지막 case 12 가 최종적으로 실행되기 때문입니다. switch-case 문에서는 조건에 맞는 수행문을 수행한 후에 switch-case 문을 빠져나올 수 있도록 break 문을 꼭 사용해야 합니다.
case문에 문자열 사용
- 자바 7부터는 switch-case 문의 case 값에 정수 값뿐만 아니라 문자열도 사용할 수 있게 되었습니다.
- 문자열을 비교하기 위해서는 .equals 라는 메서드를 사용해야 했습니다.
if (medal.equals("Gold")) {
...
}
- 하지만 문자열을 직접 case문에 사용할 수 있게 된 자바 7 부터는 프로그램을 좀 더 간결하게 작성할 수 있게 되었습니다.
switch(medal) {
case "Gold" : System.out.println("금메달");
break;
...
}
'[그린컴퓨터] Server > JAVA(기본)' 카테고리의 다른 글
반복문 {정의, 종류, while문, do-while 문, for 문, for 문 요소 생략, 중첩된 반복문, continue 문, break 문} (0) | 2023.05.15 |
---|---|
연산자 우선순위 (0) | 2023.05.11 |
비트 연산자 {정의, 논리, 이동} (0) | 2023.05.11 |
기본 연산자 {항, 대입, 부호, 산술, 증가·감소, 관계, 논리·단락회로평가, 복합 대입, 조건} (0) | 2023.05.11 |
형 변환 {정의, 묵시적 형 변환, 명시적 형 변환} (0) | 2023.05.10 |