본문 바로가기
Programming/Java

[Java] 조건문 - if

by 코딩하는 랄로 2023. 9. 23.
728x90

if문

if문이란 조건식에 의해 true일 때만 실행되게 하는 문법이다. 예를 들어 입력받은 수가 양수일 때만 양수입니다라고 출력하고 싶을 때는 if문을 활용하여 다음과 같이 작성할 수 있다.

 

public class Main {
	public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        if(n > 0) {
        	System.out.println("양수입니다.");
        }
    }
}

 

n이 양수(0보다 큰 정수)일 때에는 if문안의 조건식인 n > 0 을 만족(true)하기 때문에 중괄호({})안에 선언된 출력문이 실행된다.

 

 

if-else문

만약 위의 예시에서 양수가 아닌 경우에는 "양수가 아닙니다"를 출력하고 싶다면 어떻게 해야할까? 위에서 배운 if문을 활용한다면 다음과 같이 작성할 수 있을 것이다.

 

public class Main {
	public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        if(n > 0) {
        	System.out.println("양수입니다.");
        }
        
        if(n <= 0) {
        	System.out.println("양수가 아닙니다");
        }
    }
}

 

이렇게 작성을 해도 되지만 위의 조건식의 경우 무조건 양수 아니면 양수가 아닌 조건에 포함이 된다.(n은 정수이기 때문에!!) 이런 상황에서 굳이 if문을 통해 조건식을 두번이나 검사할 필요가 없는 것이다.

 

그렇기 때문에 자바에서는 if-else문이란 문법을 지원하여 이러한 번거러움을 없앨 수 있다. if-else문이란 if문을 만족하지 못할 경우 else문을 실행시키고 if문을 만족할 경우 if문만을 실행한다.

 

이를 이용하면 위의 코드를 다음과 같이 변경 할 수 있다.

 

public class Main {
	public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        if(n > 0) {
        	System.out.println("양수입니다.");
        } else {
        	System.out.println("양수가 아닙니다");
        }
    }
}

 

 

if-else if문

하지만!! 만약 위의 상황에서 n이 0인 조건에는 "0입니다"라고 출력하는 조건문을 추가하고 싶다면 어떻게 해야 할까? 밑에서 배울 중첩 if문을 활용하여도 되지만 else if문을 통해서 다음과 같이 조건문을 추가할 수 있다.

 

public class Main {
	public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        if(n > 0) {
        	System.out.println("양수입니다.");
        } else if(n == 0) {
        	System.out.println("0 입니다");
        } else {
        	System.out.println("음수입니다");
        }
    }
}

 

if-else if-else 조합에서 if와 else는 한번만 사용가능하지만 else if문은 여러번 사용하여 조건을 추가할 수 있다.

 

 

 

삼항 연산자

삼항 연산자란 조건문과 관련된 연산자로서 이름 그대로 항을 3개를 가지는 연산자이다.

 

예를 들어, 서로 다른 정수가 할당된 int형 정수 n1, n2가 있을 때 더 큰 수를 int max에 할당하기를 원할 때 위의 if 조건문을 활용하면 다음과 같이 코드를 작성 할 수 있다.

 

public class Main {
	public static void main(String[] args) {
    	int n1 = 30;
        int n2 = 15;
        int max;
        
        if(n1 < n2) {
        	max = n2;
        } else {
        	max = n1;
        }
    }
}

 

하지만 삼항연산자를 사용한다면 다음과 같이 간편하게 코드를 작성할 수 있다.

 

public class Main {
	public static void main(String[] args) {
    	int n1 = 30;
        int n2 = 15;
        
        int max = (n1 > n2) ? n1 : n2;
        
    }
}

 

위의 예시처럼 삼항 연산자는 ?와 : 로 이루어져 있다. ? 왼쪽 항에 조건식이 오고 이것이 참이라면 : 왼쪽의 항을 거짓이라면 : 오른쪽의 항을 대입하는 것이다.

 

삼항연산자도 응용하여 쓴다면 코드를 훨씬 간결하게 작성할 수 있다.

 

 

 

nested if문

nested if문은 중접 if문이라고 한다. 이름 그대로 if문안에 if문을 넣어서 사용하는 것을 일컫는다. 위에서 살펴본 음수, 양수 예제를 다시 한번 살펴보면,

 

public class Main {
	public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        //if(n > 0) {
        //	System.out.println("양수입니다.");
        //} else if(n == 0) {
        //	System.out.println("0 입니다");
        //} else {
        //	System.out.println("음수입니다");
        //}
        
        if( n > 0 ) {
        	System.out.println("양수입니다.");
        } else {
        	if(n == 0) {
            	System.out.println("0 입니다");
            } else {
            	System.out.println("음수입니다");
            }
        }
    }
}

 

다음과 같이 중첩 if문을 통하여 변경가능하다.(삼항연산자도 중첩 가능!!)

 

 

728x90

'Programming > Java' 카테고리의 다른 글

[Java] 반복문 - for  (0) 2023.09.23
[Java] 조건문 - Switch  (0) 2023.09.23
[Java] 연산자 - SCE, 비트  (0) 2023.09.20
[Java]연산자 - 부호, 증감, 비교, 논리  (0) 2023.09.20
[JAVA] 연산자 - 대입  (0) 2023.09.20