3 minute read

조건문

  • 프로그램 수행 흐름을 바꾸는 역할하는 제어문 중 하나
  • 조건에 따라 다른 실행 블록이 수행
if( 조건식 ) {
    실행 블록
}

기본 문법은 이렇고, 괄호 안에 조건식을 쓰고,
그 조건이 참일 경우 실행 블록에 있는 코드를 실행한다.


if문

if( num > 0 ) { // num이 0보다 크면
    System.out.println("양수"); // 실행 블록 실행
}

if ~ else문

if( num > 0 ) { // num이 0보다 크면
    System.out.println("양수"); // 양수 출력
} else {
    System.out.println("음수"); // 0 보다 작으면 음수 출력
}

num이라는 변수에 담긴 값에 따라 실행 되는 블록이 다르다.

int num = 1;
if( num > 0 ) {
    System.out.println("양수");
} else {
    System.out.println("음수");
}
// 출력 결과 : 양수
int num = -1;
if( num > 0 ) {
    System.out.println("양수");
} else {
    System.out.println("음수");
}
// 출력 결과 : 음수

if ~ esle if ~ else문

if( 조건식 1 ) {
    실행 a
} else ( 조건식 2) {
    실행 b
} else {
    실행 c
}

제일 먼저 조건식 1에 만족 여부를 가리고, 그다음 조건식으로 넘어간다.

int age = 60;
if( age <= 13 ) { // 13 이하
    System.out.println(age + "세는 어린이입니다.");
} else ( age > 13 && age >= 19) { // 13 이상 19 이하
    System.out.println(age + "세는 청소년입니다.");
} else { // 19 이상
S   ystem.out.println(age + "세는 성인입니다.");
}

ge에 60(세)를 담고
1) ( age <= 13 ) 조건식 1 확인
2) age는 13보다 크기 때문에 조건식 2로 이동
3) 조건식 2도 참이 아니기 때문에 그외 다른 선택, else로 빠진다.


중첩 if 문

  • if문 중첩 사용 가능
  • 무분별하게 사용 시 가독성 문제

오늘 중첩 if문 실습문제는 없어서 혼자 문제를 만들고 풀어봤다.

문제) 시험 점수를 입력 받고, 점수가 70 - 100점 사이일 경우 PASS를 출력하고, 아닐 경우 FAIL을 출력.

  • 90 - 100점 사이일 경우 A 출력
  • 80 - 89점 사이일 경우 B 출력
  • 70 - 79점 사이일 경우 C 출력
  • 0점 미만, 100점 이상을 입력할 경우 다시 입력하세요 출력
int score = 0;

Scanner scanner = new Scanner(System.in);
System.out.print("시험 점수를 입력하세요. : ");
score = scanner.nextInt();

if ( score >= 70 && score <=100 ) { // 70 - 100점 사이인지 확인
    System.out.print("PASS "); // 맞으면 출력
    if ( score >= 90 && score <= 100 ) { // 90 - 100점 사이일 경우
        System.out.println("A"); // A 출력

    } else if ( score >= 80 && score <= 89 ) { // 80 - 89 사이일 경우
        System.out.println("B"); // B 출력

    } else { // 70 - 100 점 사이이지만 조건식 1, 2도 아닌 경우
        System.out.println("C"); // C 출력
    }
} else if ( score > 100 || score < 0 ) { // 100점 이상 0점 미만 입력시
    System.out.println("다시 입력하세요."); // 다시 입력하세요 출력

} else { // 위 조건식이 전부 아닐 때 출력
    System.out.println("FAIL");
}

우선 70 - 100점 사이인지 아닌지 구별해서 PASS 와 FAIL을 출력한다.
70 - 100점 사이일 경우 PASS를 출력하고 A, B, C등급을 구분하여 또 출력한다.
그 외 숫자 입력시 FAIL과 다시 입력하세요를 출력한다.


switch문

  • 조건식 하나로 많은 경우의 수 처리
  • 결과 값은 정수, 문자, 문자열
    • 문자열은 JDK 7 이상부터 지원
  • break문 없을 경우 다음 case 내에 break문에 도달할 때까지 실행
  • default문은 일치하는 case문이 없을 경우 수행
    • if문의 eale와 같은 기능(생략 가능)
switch ( 조건식) {
case 1:
// 결과 값이 1이면 실행
break;

case 2:
// 결과 값이 2이면 실행
break;

default:
// 결과 값과 일치하는 게 없을 경우 실행
}
String fruit = "";

Scanner scanner = new Scanner(System.in);
System.out.print("복숭아, 귤, 수박, 망고 중 하나를 입력하세요. : " );
fruit = scanner.nextLine();

switch( fruit ) {
case "복숭아" :
    System.out.println("복숭아를 입력했습니다.");
break;

case "귤" :
    System.out.println("귤을 입력했습니다.");
break;

case "수박" :
    System.out.println("수박을 입력했습니다.");
break;

case "망고" :
    System.out.println("망고를 입력했습니다.");
break;

default :
    System.out.println("다시 입력해주세요.");
}

제시 된 과일명 중 하나를 입력 받고, 해당 과일명이 있는 case문으로 이동한다.
그 외의 과일명 입력시 다시 입력해주세요. 출력 « 조건에 맞는 case가 없기 때문.


Categories:

Updated: