문제
연령에 따라 다른 메시지를 출력하는 프로그램을 작성해야 한다.
int, age라는 변수를 사용해야 하며 연령에 따라 다음의 출력을 해야한다.
● 7세 이하일 경우 : "미취학"
● 8세 이상 13세 이하일 경우 : "초등학생"
● 14세 이상 16세 이하일 경우 : "중학생"
● 17세 이상 19시 이하일 경우 : "고등학생"
● 20세 이상일 경우 : "성인"
예제 코드)
package cond;
public class If3 {
public static void main(String[] args) {
int age = 14;
if(age <= 7) { //미취학
System.out.println("미취학");
}
if(age >= 8 && age <= 13) { // 8~13 : 초등학생
System.out.println("초등학생");
}
if(age >= 14 && age <= 16) { // 14~16 : 중학생
System.out.println("중학생");
}
if(age >= 17 && age <= 19) { // 17~19 : 고등학생
System.out.println("고등학생");
}
if(age >= 20) { // 20이상 : 성인
System.out.println("성인");
}
}
}
실형 결과)

# 위 코드는 단점이 있다.
- 불필요한 조건 검사 : 이미 조건을 만족해도 불필요한 다음 조건을 계속 검사한다.
예를 들어 나이가 5살이라면 미취학이 출력된다. 하지만 나머지 if 문을 통한 조건 검사도 모두 실행해야 한다. - 코드 효율성 : 8살인 초등학생이라면 미취학을 체크하는 조건인 age <= 7을 통해 나이가 8살이 넘는걸 알 수 있다.
하지만 age >= 8 && age <= 13 이라는 2가지 조건을 모두 수행한다.
여기서 age >= 8 이라는 조건은 앞의 age <= 7이라는 조건과 관련 있으며, 결과적으로 조건을 중복 체크한 것이다.
※ 이런 코드에 else if 를 사용해서 불필요한 조건 검사를 피하고 코드 효율성을 높일 수 있다.
- else if
else if문 이란?
if 문의 조건이 거짓일 때 다음 조건을 검사한다.
만약 앞선 if 문이 참이라면 else if를 실행하지 않는다.
- else if 코드
if (condition1) {
// 조건 1이 참일 때 실행되는 코드
} else if (condition2) {
// 조건 1이 거짓이고, 조건 2가 참일 때 실행되는 코드
} else if (condition3) {
// 조건 2이 거짓이고, 조건3이 참일 때 실행되는 코드
} else {
// 모든 조건이 거짓일 때 실행되는 코드
}
# 쉽게 생각해서 전체 if문을 하나로 묶는다고 보면 된다.
특정 조건이 만족하면 해당 코드를 실행하고 if 문 전체를 빠져나온다.
특정 조건을 만족하지 않으면 다음 조건을 검사힌다.
※ 핵심은 순서대로 맞는 조건을 찾아보고, 맞는 조건이 있으면 1개만 실행되는 것이다.
- else 생략 코드
if (condition1) {
// 조건1이 참일 때 실행되는 코드
} else if (condition2) {
// 조건1이 거짓이고, 조건2가 참일 때 실행되는 코드
}
else if를 사용한 예제 코드)
package cond;
public class if4 {
public static void main(String[] args) {
int age = 18;
if(age <= 7) { // ~7 : 미취학
System.out.println("미취학");
} else if (age <= 13) { // 8~13 : 초등학생
System.out.println("초등학생");
} else if (age <= 16) { //14~16 : 중학생
System.out.println("중학생");
} else if (age <= 19) { // 17~19 : 고등학생
System.out.println("고등학생");
} else { // 20~ : 성인
System.out.println("성인");
}
}
}
실행 결과)

'Language > Java' 카테고리의 다른 글
| Java 삼항 연산자 (0) | 2024.06.28 |
|---|---|
| Java switch문 (0) | 2024.06.27 |
| Java if문1 - if, else (0) | 2024.06.27 |
| Java 연산자 문제 풀이 (0) | 2024.06.27 |
| Java 대입연산자 (0) | 2024.06.27 |