[Java 기초] if, else if, else 문에서 조건 순서가 중요한 이유
안녕하세요~
이번 시간에는 조건 순서에 따라 달라지는 출력에 대해 알아보려고 하는데요.
완벽하게 파악해 봅시다~
조건문 if, else if, else를 모두 사용한 코드
package study;
import java.util.Scanner;
public class Day14 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("숫자입력> ");
int num = sc.nextInt();
if(num == 0) {
System.out.println("0입니다.");
}
if(num % 3 == 0) {
System.out.println("3의 배수");
}
if(num % 4 == 0) {
System.out.println("4의 배수");
}
if(num % 3 == 0 && num % 4 == 0) {
System.out.println("3과 4의 배수");
}else {
System.out.println("둘 다 아닙니다.");
}
}
}
package study;
import java.util.Scanner;
public class Day14_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("숫자입력> ");
int num = sc.nextInt();
if(num == 0) {
System.out.println("0입니다.");
}else if(num % 3 == 0) {
System.out.println("3의 배수");
}else if(num % 4 == 0) {
System.out.println("4의 배수");
}else if(num % 3 == 0 && num % 4 == 0) {
System.out.println("3과 4의 배수");
}else {
System.out.println("둘 다 아닙니다.");
}
}
}
package study;
import java.util.Scanner;
public class Day14_3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("숫자입력> ");
int num = sc.nextInt();
if(num == 0) {
System.out.println("0입니다.");
}else if(num % 3 == 0 && num % 4 == 0) {
System.out.println("3과 4의 배수");
}else if(num % 3 == 0) {
System.out.println("3의 배수");
}else if(num % 4 == 0) {
System.out.println("4의 배수");
}else {
System.out.println("둘 다 아닙니다.");
}
}
}
세 개의 클래스 모두 3의 배수, 4의 배수, 3과 4의 배수를 판별하여 출력하려고 하는데 조금씩 다르게 작성한 코드.
오늘의 핵심 키워드
- if문은 조건이 참일 때 실행된다. 따라서, if문이 여러 개일 때는 모든 조건을 확인한다.
- if else문은 앞에 조건이 거짓이고 해당 조건이 참일 때만 실행된다. 반대로 생각하면 앞에 조건이 참일 때는 실행되지 않는다.
- else문은 모든 조건이 거짓일 때 실행된다. if else문과 마찬가지로 앞에 조건들 중에 참이 있을 때는 실행되지 않는다
Day14 클래스에서는 조건문을 if문 4개와 else문 1개로 작성했고 모든 조건을 확인하고 참일 때 실행하게 됩니다.
(1) 12를 입력했을 때 ▶ 3과 4의 배수, 3의 배수, 4의 배수 조건 모두 참이기 때문에 출력
(2) 3을 입력했을 때 ▶ 3의 배수 조건이 참이라서 출력되었고 3과 4의 배수 조건에 대해 거짓이기 때문에 else문 실행
Day14_2 클래스에서는 조건문을 if문 1개, else if문 3개, else문 1개로 작성했습니다.
(1) 12를 입력했을 때 ▶ if문부터 체크해서 0이 아니니까 넘어가고 3의배수 조건이 참이기 때문에 실행 후 아래 조건들은 체크하지 않습니다.
(2) 3을 입력했을 때 ▶ 12와 마찬가지로 if문부터 체크해서 0이 아니니까 넘어가고 3의배수 조건이 참이기 때문에 실행 후 아래 조건들은 체크하지 않습니다.
Day14_3 클래스에서는 Day14_2 클래스와 구성을 똑같지만 조건의 순서만 바꾸어 작성했습니다.
(1) 12를 입력했을 때 ▶ if문부터 체크해서 0이 아니니까 넘어가고 3과 4의 배수 조건이 참이기 때문에 실행 후 아래 조건들은 체크하지 않습니다.
(2) 3을 입력했을 때 ▶ if문부터 체크해서 0이 아니니까 넘어가고 3과 4의 배수도 아니니까 넘어가고 3의 배수 조건이 참이기 때문에 실행 후 아래 조건들은 체크하지 않습니다.
꼭 봐야되는 마무리 꿀팁!
- 같은 상황에서 한 가지 경우에서만 실행하고 싶을 때는 if, else if, else 형식 적절히 사용하기!
- 정확한 실행을 위해서 조건의 범위 중에서 넓은 조건일수록 나중에 배치하기!
▲ 영상으로 한번 더 복습하세요 :)