본문 바로가기

develop/Java

if 조건문

if 문은 기본 if 문, if-else문, if - else if (다중 else if문)으로 나뉜다.

 

1. 기본 if문

 

- 주어진 조건의 결과가 true일 때, 추가적인 문장을 실행하고

  false 이면 추가적인 문장을 실행하지 않는 if문

 

 

 

<기본 문법>

문장a;
if (조건식) {
 				문장b; 
}
문장c;
=>조건식 결과가 true일 때는 a -> b -> c
=>조건식 결과가 false일 때 실행순서 a- > c
조건식이 true일 때 {} 내의 문장을 실행한다. 

<ex>

int num = -5;

정수형 변수 num이 0보다 큰가?
if(num>0){
 System.out.println("0보다 크다")
}

num이 -5여서 조건문에서 false가 나오므로 문장 실행x

 

 

 

 

 

2. if ~ else 문

 

-if문과 달리 조건식 결과에 따라 서로 다른 문장을 실행하는 문이다.

조건식의 결과가 true냐 false냐에 따라 실행할 문장이 달라진다!

-삼항연산자와 동작 원리가 비슷함

 

 

 

 

 

<기본 문법>

문장a;

if(조건식) {
  문장b; 
} else     {
  문장c;
}
문장d;

조건식이 true일 경우 : a -> b -> d
조건식이 false일 경우: a -> c -> d


<ex>
int num = -5;
//정수 num이 0보다 클 경우 "0보다 크다"를 출력하고 
//아닐 경우 "0보다 크지않다"를 출력

if(num > 0) {
 System.out.println("0보다 크다");
} else {
 System.out.println("0보다 크지 않다.");
} 

 

 

 

 

3. if ~ else if 문 (=다중 else if 문 = if ~ else if ~ else문)

 

 

if문이 막 복잡한건 아닌데 3번 다중 if ~ else 문이 좀 헷갈렸다

- 2개 이상의 조건식을 판별 가능한 if문

- 첫번째 조건식을 판별하여 true일 때 특정 문장을 실행하고 

  false 일 경우, 새로운 조건식을 판별하여 다른 문장을 실행하는 if 문이다.

- (조건식 == true) ==> 특정 문장 실행

  (조건식 == false) ==> else if (조건식) ==> true/false 판별 ==> 실행

-단, 마지막 else 문은 생략할 수도 있다! (필수는 아니다)

-주의! 조건식 판별 순서는 윗쪽 if문부터 차례대로 판별하므로 범위가 좁은 조건식부터 범위가 넓은 조건식 순으로

 기술해야 한다. 만약 넓은 범위가 윗쪽에 위치해 실행될 경우 범위가 좁은 if문은 실행되지 않을 수도 있음

 

 

 

 

<기본 문법> 

 

문장a;

if(조건식1) { 
 문장b;  <= 조건식1true일 경우 실행한다. 
} else if (조건식2) {
 문장c; <= 조건식1false이고 조건식2true일 경우 실행한다.
} else if (조건식n) {
 문장n; <= 조건식1,2false이고 조건식n이 true일 경우 실행한다.
 } else {
 문장x; <= 모든 조건식 결과가 false 일때 실행한다. 
 }
 
 <ex>
 int num = 0;
 
 //else 문이 포함된 경우
 if(num > 10) {
  System.out.println("10보다 크다");
 } else if(num > 5){
  System.out.println("5보다 크다");
 } else if(num > 0){
  System.out.println("0보다 크다");
 } else {
  System.out.println("0보다 크지 않다.")  
 }
 
 //else 문이 생략된 경우
 //모든 조건식 판별 결과가 false 이면 그대로 if문이 종료됨
 
 if(num > 10) {
  System.out.println("10보다 크다");
 } else if (num > 5){
  System.out.println("5보다 크다"); 
 } else if (num > 0){
  System.out.println("0보다 크다");
 }
// 주의! 조건식 판별 과정에서 더 큰 범위를 포함하는 조건식이
// 작은 범위 조건식보다 윗쪽에 위치할 경우 작은 범위 조건식은 실행X
num = 10;
if(num > -5) { // num 이 -5보다 큰가?
	System.out.println("num 이 -5보다 크다!");
} else if(num > 5) { // num 이 5보다 큰가?
	System.out.println("num 이 5보다 크다!"); // 실행X
} else if(num > 0) { // num 이 0보다 큰가?
	System.out.println("num 이 0보다 크다!"); // 실행X
} 
// => 위의 코드 중 num > -5 조건식을 가장 마지막 조건식으로 설정해야함
if(num > 5) { // num 이 5보다 큰가?
	System.out.println("num 이 5보다 크다!");
} else if(num > 0) { // num 이 0보다 큰가?
	System.out.println("num 이 0보다 크다!");
} else if(num > -5) { // num 이 -5보다 큰가?
	System.out.println("num 이 -5보다 크다!");
} 

 

 

 

 

4. 중첩 if문

 

-if문 또는 else문 등 내부에서 또 다른 if문을 중첩시키는 것

-특정 조건을 만족할 경우 또 다른 조건식을 판별할 때 사용한다. ? ! 

-앞에 3.이랑 조금 헷갈리긴 하지만 중첩 if문은 큰 대전제가 되는 조건식을 만족한 뒤, 그 밑으로 새로운 if문장들을

만들어가는 거라 다르다. ? 맞나

 

<기본 문법>

 

if(조건식1){
		if(조건식2) {
     			 // 조건식 1,2 모두 true일 때 실행할 문장
   		 } else {
                 // 조건식 1은 true이고 조건식2 false일 때 실행할 문장
  		 } 
} else if (조건식3) {
    		if (조건식4) {
    	//조건식 1은 false, 조건식 3,4 모두 true 일때 실행할 문장
  				  }
    
   }
   
  
 int num = 10;
 if (num > 0) { 
  System.out.println("양수다");
  	if(num % 2 == 0){
      System.out.println("짝수다");
    }
  
  } else {
  	if(num==0) {
      System.out.println("0이다");
    } else {
     	  System.out.println("음수다");
    }
   } 
  
  
int score = -5;
String grade;

//정수가 0~100사이 판별
if(score >=0 && score <= 100){
	//0~100	사이의 점수일 경우에만 학점 판별
    if(score>=90 && score <=100){
      grade = "A";
    } else if (score >=80){
      grade = "B";
    } else if (score >=70){
      grade = "C";
    } else if (score >=60){
      grade = "D";
    } else {
      grade = "F";
    }
    
      System.out.println("학점 : " + grade);
    
} else{
   System.out.println("점수 입력 오류!");
}

출력하면 score 값에 따른 학점이 출력된다. 

 

 

 

 

5. Dangling else (매달린 else)

 

-중괄호를 생략하는 if ~ else (또는 else if) 문에서 

 if 문과 else문의 짝을 이루는 규칙에 대한 문제가 발생한다. 

-기본적으로 else 문은 바로 윗쪽 가장 가가운 if 문과 짝을 이룬다

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

for 문과 while문 - 중첩 (2)  (0) 2021.01.25
for 문과 while문 - (1)  (0) 2021.01.23
switch 조건문  (0) 2021.01.19
변수와 데이터타입  (0) 2021.01.19
형변환 연산자  (0) 2021.01.19