/ JAVAJUNGSUK

Ch4-5~8. 중첩 if문

자바의 정석 기초편

0. 목차



Chapter4. 조건문과 반복문

Ch4 - 5. if - else if문

Ch4 - 6. if - else if문 예제

Ch4 - 7. 중첩 if문

Ch4 - 8. 중첩 if문 예제



Ch4 - 5. if - else if문


▶ if - else if문이란?

▷ 여러 개 중의 하나 : 여러 개의 조건식을 포함한 조건식
if (조건식1) {
// 조건식1 = true일 때, 이 구역((조건식1) { })을 실행
} else if (조건식2) {
// 조건식2 = true일 때, 이 구역((조건식1) { })을 실행
} else if (조건식3) {
// 조건식3 = true일 때, 이 구역((조건식1) { })을 실행
} else {
// 조건식1, 2, 3 모두 false일 때, 이 구역(else { })을 실행
}



Ch4 - 6. if - else if문 예제


▶ 70점은 몇 학점?

int score = 70; // score = 점수 저장
char grade = ' ';   // grade = 학점 저장

if (score >= 90) {  // ① 70 >= 90 → false
grade = 'A';
} else if (score >= 80) {   // ② 70 >= 80 → false
grade = 'B';
} else if (score >= 70) {   // ③ 70 >= 70 → true
grade = 'C';    // ④ grade = C
} else {
grade = 'D';
}   // ⑤ 조건 - 만족 - 실행 - 조건문 빠져나옴

System.out.println(grade);

// console
C

if문 : 딱 하나의 문장만 실행하고 빠져나옴

else if (score >= 80) = 80 ≤ score < 90 ??
  • score가 90보다 작아야 하는 게 조건에 입력되지 않음
  • 왜?
  • if문 : if (score >= 90)에서 이미 90보다 작은 애들 검증 끝
  • 그래서 else if (score >= 80)으로 온 애들은 애초에 다 90보다 작음
  • 그래서 검증이 필요 없음
▷ 코드를 줄이기
  • else문 없애기
      int score = 50;
      char grade = 'D';   // 초기값으로 'D'를 줌 → else문은 없애기
        
      if (score >= 90) {  // ① 50 >= 90 → false
          grade = 'A';
      } else if (score >= 80) {   // ② 50 >= 80 → false
          grade = 'B';
      } else if (score >= 70) {   // ③ 50 >= 70 → false
          grade = 'C';
      }
      // ④ if문에 만족하는 조건 없음 → 그냥 빠져나옴 → grade는 초기값 그대로 'D'
        
      System.out.println(grade);
        
      // console
      D
    



Ch4 - 7. 중첩 if문


▶ 중첩 if문이란?

▷ if문 안의 if
▷ 중첩횟수는 제약이 없다 보면 됨
  • if문 안에 if문은 1000번 정도 들어감
  • 보통 if문 3~4번 정도 밖에 쓰지 않음
      if (조건식1) {
          // 조건식1 = true일 때, 이 구역((조건식1) { })을 실행
          if (조건식2) {
          // 조건식1, 2 = 둘 다 true일 때, 이 구역(중첩 if(조건식2) { })을 실행
          } else {
          // ① 조건식1 = true ② 조건식2 = flase일 때, 이 구역(중첩 if의 else { })을 실행
          }
      } else {
          // 조건식1 = false일 때, 이 구역(else { })을 실행
      }
    
▷ 괄호 생략시 주의!
  • 괄호 생략 : 들여쓰기로 구분가능?? → 구분 안됨
      if (num >= 0)   // ① if문
          if (num != 0)   // ② 중첩 if문
              sign = '+';
      else    // ① if문의 else?? OR ② 중첩 if문의 else??
          sign = '-';
    
  • 괄호
      if (num >= 0) { // ① if문
          if (num != 0) { // ② 중첩 if문
              sign = '+';
          } else {    // ② 중첩 if문의 else
          sign = '-';
          }
      }
    



Ch4 - 8. 중첩 if문 예제


▶ 70점은 몇 학점? + 학점의 + - 추가하기

▷ 97 ~ 100 = A+
▷ 94 ~ 96 = A
▷ 90 ~ 93 = A-
▷ 87 ~ 89 = B+
▷ 84 ~ 86 = B
▷ 80 ~ 83 = B-
▷ 70 ~ 79 = C
char grade = ' ', sign = ' ';
		
System.out.printf("점수입력 > ");

Scanner scanner = new Scanner(System.in);
int score = scanner.nextInt();

if (score >= 90) {
    grade = 'A';
    if (score >= 97) {
        sign = '+';
    } else if (score >= 93) {
        sign = '-';
    }
} else if (score >= 80) {
    grade = 'B';
    if (score >= 87) {
        sign = '+';
    } else if (score >= 83) {
        sign = '-';
    }
} else if (score >= 70) {
    grade = 'C';
}

System.out.printf("점수 : %d점\n학점 : %c%c", score, grade, sign);

// console
점수입력 > 97
점수 : 97
학점 : A+