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; <= 조건식1이 true일 경우 실행한다.
} else if (조건식2) {
문장c; <= 조건식1이 false이고 조건식2가 true일 경우 실행한다.
} else if (조건식n) {
문장n; <= 조건식1,2가 false이고 조건식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 |