Java_05) Control - 조건문(제어문)
2025. 8. 26. 08:37

제어문이란?

프로그램은 기본적으로 순차적으로 실행한다.

하지만 때로는 특정 조건에 따라 다른 코드를 실행하거나, 특정 코드를 반복해서 실행해야 할 때가 있다.

 

제어문의 종류:

조건문: 특정 조건에 따라 코드를 선택적으로 실행 (if문, switch문)
반복문: 특정 코드를 반복해서 실행 (for문, while문 등)

    조건문은 "조건식"을 통해 true 또는 false를 판단하고, true일 경우 해당하는 코드를 실행

 

    1. <단독 if문>

[표현식]

if (조건식) {
    조건에 따라 실행할 구문
}

[동작 원리]

  • 조건식이 true → 중괄호 안의 코드 실행
  • 조건식이 false → 중괄호 안의 코드 건너뜀

예제 코드:

package com.kh.control;

import java.util.Scanner;

public class If {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("정수 입력: ");
        int num = sc.nextInt();
        
        if (num > 0) {
            System.out.println("양수입니다.");
        }
        else if (num < 0) {
            System.out.println("음수입니다.");
        }
        else {
            System.out.println("0입니다.");
        }
        
        sc.close();
    }
}

실행 결과:

정수 입력: 5
양수입니다.

정수 입력: -3
음수입니다.

정수 입력: 0
0입니다.

2. if문의 세 가지 형태

단독 if문

if (조건식) {
    // 조건이 참일 때만 실행
}

if-else문

if (조건식) {
    // 조건이 참일 때 실행
} else {
    // 조건이 거짓일 때 실행
}

if-else if-else문

if (조건식1) {
    // 조건식1이 참일 때 실행
} else if (조건식2) {
    // 조건식2가 참일 때 실행
} else {
    // 모든 조건이 거짓일 때 실행
}

 

    <switch문>

  • 동등 비교만 가능 (정확히 일치하는 값만)
  • 정수, 문자, 문자열만 비교 가능
  • break문을 사용하여 switch문 종료
  • break문이 없으면 다음 case도 계속 실행됨

기본 구조

switch(비교대상) {
    case 값1:
        실행코드;
        break;
    case 값2:
        실행코드;
        break;
    default:
        기본 실행코드;
}

색상 선택 예제

package com.kh.control;

import java.util.Scanner;

public class Switch {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("정수 입력 (1-3): ");
        int num = sc.nextInt();
        
        switch(num) {
            case 1:
                System.out.println("빨간색입니다.");
                break;
            case 2:
                System.out.println("파란색입니다.");
                break;
            case 3:
                System.out.println("초록색입니다.");
                break;
            default:
                System.out.println("잘못 입력했습니다.");
        }
        
        sc.close();
    }
}

실행 결과:

정수 입력 (1-3): 1
빨간색입니다.

정수 입력 (1-3): 4
잘못 입력했습니다.

과일 가격 조회 프로그램

// 과일명을 입력받아 가격을 출력하는 프로그램
System.out.print("구매하고자 하는 과일(사과, 바나나, 딸기) 입력: ");
String fruit = sc.next();

switch(fruit) {
    case "사과":
        System.out.println(fruit + "의 가격은 2000원입니다.");
        break;
    case "바나나":
        System.out.println(fruit + "의 가격은 3000원입니다.");
        break;
    case "딸기":
        System.out.println(fruit + "의 가격은 5000원입니다.");
        break;
    default:
        System.out.println("잘못 입력하셨습니다.");
}

여러 case를 묶어서 처리하기

// 월별 일수 출력 프로그램
int day = 0;
System.out.print("월을 입력하세요: ");
int month = sc.nextInt();

switch(month) {
    case 2:
        day = 28;
        break;
    case 1: case 3: case 5: case 7: 
    case 8: case 10: case 12:
        day = 31;
        break;
    case 4: case 6: case 9: case 11:
        day = 30;
        break;
}

if (day == 0) {
    System.out.println("잘못된 입력입니다.");
} else {
    System.out.println(month + "월은 " + day + "일까지 있습니다.");
}

실행 결과:

월을 입력하세요: 3
3월은 31일까지 있습니다.

월을 입력하세요: 13
잘못된 입력입니다.

 

예제 1: 나이별 분류 프로그램

package com.kh.control;

import java.util.Scanner;

public class Practice1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String group = null;
        
        System.out.print("나이를 입력: ");
        int age = sc.nextInt();
        
        if (age > 0 && age <= 13) {
            group = "어린이";
        } else if (age <= 19) {
            group = "청소년";
        } else if (age > 19) {
            group = "성인";
        }
        
        if (group != null) {
            System.out.println(age + "은 " + group + "에 속합니다.");
        } else {
            System.out.println("잘못된 입력");
        }
        
        sc.close();
    }
}

실행 결과:

나이를 입력: 15
15은 청소년에 속합니다.

나이를 입력: 25
25은 성인에 속합니다.

예제 2: 성별 판단 프로그램

package com.kh.control;

import java.util.Scanner;

public class Practice2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("성별(m/f): ");
        char gender = sc.next().charAt(0);
        
        switch(gender) {
            case 'm': case 'M':
                System.out.println("남학생입니다.");
                break;
            case 'f': case 'F':
                System.out.println("여학생입니다.");
                break;
            default:
                System.out.println("잘못입력하셨습니다.");
        }
        
        sc.close();
    }
}

실행 결과:

성별(m/f): m
남학생입니다.

성별(m/f): F
여학생입니다.

성별(m/f): x
잘못입력하셨습니다.

코드 설명:

  • sc.next().charAt(0): 문자열의 첫 번째 문자만 추출
  • case 'm': case 'M':: 여러 case를 연속으로 사용하여 대소문자 모두 처리

예제 3: 짝수/홀수 판별 프로그램

package com.kh.control;

import java.util.Scanner;

public class Practice3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("양수 입력: ");
        int num = sc.nextInt();
        
        if (num <= 0) {
            System.out.println("양수가 아닙니다.");
        } else if (num % 2 == 1) {
            System.out.println("홀수입니다.");
        } else {
            System.out.println("짝수입니다.");
        }
        
        sc.close();
    }
}

실행 결과:

양수 입력: 7
홀수입니다.

양수 입력: 8
짝수입니다.

양수 입력: -5
양수가 아닙니다.

if문 vs switch문 언제 사용할까?

if문을 사용하는 경우

  • 범위 비교가 필요할 때 (age >= 20)
  • 복잡한 조건식이 필요할 때 (score >= 90 && score <= 100)
  • 관계 연산자논리 연산자를 사용할 때

switch문을 사용하는 경우

  • 정확한 값의 일치를 확인할 때
  • 여러 개의 값 중 하나를 선택할 때
  • 코드의 가독성을 높이고 싶을 때

 

    <정리>

if문:

  • 조건식의 결과에 따라 코드를 선택적으로 실행
  • 단독 if, if-else, if-else if-else 세 가지 형태
  • 범위 비교와 복잡한 조건 처리에 적합

switch문:

  • 값의 정확한 일치를 확인하여 코드 실행
  • 정수, 문자, 문자열만 비교 가능
  • break문으로 switch문 종료
  • 여러 case를 묶어서 같은 코드 실행 가능

'Java' 카테고리의 다른 글

Java_07) array - 배열  (1) 2025.08.26
Java_06) Loop - 반복문  (4) 2025.08.26
Java_04 ) Operator 연산자  (0) 2025.08.21
Java_03 ) Type Conversion - 형변환  (1) 2025.08.20
Java_02) Output, Input 입출력  (2) 2025.08.19