[Java] 조건문(if문, switch문)

SeoYoon·2023년 6월 14일

💗JAVA

목록 보기
8/21

🖤조건문

1. if 문

: 조건식의 결과에 따라 블록 실행 여부가 결정됨
조건식에는 true or false를 산출할 수 있는 연산값이나 boolean 타입 변수가 올 수 있음

if (조건1) {
	{else if (조건2)}
    	{else}
 }
  • if : 오직 하나(필수)
  • else if : n개가 와도 됨(선택, 없어도 됨)
  • else : 오직 하나(선택, 없어도 됨), 조건은 쓰지 않음 조건'외' 모든 것이라고 인식하기 때문에 조건을 쓰면 오류남

example)
if 혼자 사용 가능? -> O
else if 혼자 사용 가능? -> X
if - else 사용 가능? -> O
if- else if 여러개 사용 가능? -> O
if(조건) - if(조건) 사용 가능? -> O, 개별로 두 개의 if로 인식함

(1) if 문

if (조건식) {
	실행문A
}
	실행문B

① 조건식이 true이면 실행문A -> 실행문B 실행
② 조건식이 false이면 실행문B 실행

(2) if - else 문

if(조건식) {
	실행문A
    } else {
    실행문B
    }
	실행문C

① 조건식이 true이면 실행문A -> 실행문C 실행
② 조건식이 false이면 실행문B -> 실행문C 실행

(3) if - else if - else 문

if(조건식1) {
	실행문A
} else if (조건식2) {
	실행문B
} else {
	실행문C
}
	실행문D

① 조건식1이 true이면 실행문A -> 실행문D 실행
② 조건식1이 false이면 조건식2로 이동
③ 조건식2가 true이면 실행문B -> 실행문D 실행
④ 조건식2가 false이면 실행문C -> 실행문D 실행


2. switch 문

if문과 마찬가지로 조건 제어문, 변수가 어떤 값을 갖느냐에 따라 실행문이 선택됨

switch (변수) {
	case1 :
    실행문A
    
    	break;
    
    case2 :
    실행문B
    
    	break;
    default: // default는 생략 가능
    실행문C
}

① 변수가 값1일 경우 실행문A 실행
② 변수가 값2일 경우 실행문B 실행
③ 변수가 값1, 값2 둘 다 아닐 경우 실행문C 실행


* 주요 구성 요소

  1. switch 키워드 : 조건문 시작

  2. expression (표현식) :
    - 정수형, 문자형, 문자열, 열거형(enums) 또는 String 자료형의 값일 수 있음

  3. case value :
    - 각 expression의 값과 일치하는 경우 실행할 코드 블록
    - 각 case는 고유한 값을 가져야 하며 중복 불가

  4. break :
    - breakswitch 블록을 종료하고, 실행 흐름을 블록 밖으로 보냄
    - 생략 시, 다음 case 블록도 실행(이를 fall-through라고 함)

  5. default (옵션) :
    - 주어진 case와 일치하는 값이 없을 때 실행됨
    - 생략 가능하며 defaultswitch블록의 마지막에 배치하는 것이 일반적


* 동작 과정

  1. expression 평가 :
    - switch 뒤의 표현식이 평가됩니다.

  2. 값 비교 :
    - 평가된 값과 각 case의 값을 비교

  3. 일치하는 case 실행 :
    - 일치하는 첫 번째 case의 코드를 실행

  4. break처리 :
    - break가 있는 경우 실행을 중단하고 switch 블록 종료
    - break가 없으면 다음 case 블록으로 계속 실행

  5. default 실행 :
    - 어떤 case와도 일치하지 않으면 default가 실행


2-1. Switch문 예제

(1) 요일에 따른 메시지 출력

import java.util.Scanner;

public class DayOfWeek {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.println("Enter a day number (1 for Monday, 2 for Tuesday, ..., 7 for Sunday): ");
        int day = sc.nextInt();
        
        switch (day) {
            case 1:
                System.out.println("Monday - Start of the work week!");
                break;
            case 2:
                System.out.println("Tuesday - Keep going!");
                break;
            case 3:
                System.out.println("Wednesday - Midweek already!");
                break;
            case 4:
                System.out.println("Thursday - Almost there!");
                break;
            case 5:
                System.out.println("Friday - Weekend is near!");
                break;
            case 6:
                System.out.println("Saturday - Time to relax!");
                break;
            case 7:
                System.out.println("Sunday - Prepare for the week ahead!");
                break;
            default:
                System.out.println("Invalid day number!");
                break;
        }
    }
}

(2) 계산기 프로그램

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("Enter first number: ");
        double num1 = sc.nextDouble();

        System.out.println("Enter an operator (+, -, *, /): ");
        char operator = sc.next().charAt(0);

        System.out.println("Enter second number: ");
        double num2 = sc.nextDouble();

        switch (operator) {
            case '+':
                System.out.println("Result: " + (num1 + num2));
                break;
            case '-':
                System.out.println("Result: " + (num1 - num2));
                break;
            case '*':
                System.out.println("Result: " + (num1 * num2));
                break;
            case '/':
                if (num2 != 0) {
                    System.out.println("Result: " + (num1 / num2));
                } else {
                    System.out.println("Error: Division by zero is not allowed.");
                }
                break;
            default:
                System.out.println("Invalid operator!");
                break;
        }
    }
}

(3) 학생 등급 계산

import java.util.Scanner;

public class GradeEvaluator {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("Enter your score (0-100): ");
        int score = sc.nextInt();

        switch (score / 10) {
            case 10:
            case 9:
                System.out.println("Grade: A");
                break;
            case 8:
                System.out.println("Grade: B");
                break;
            case 7:
                System.out.println("Grade: C");
                break;
            case 6:
                System.out.println("Grade: D");
                break;
            default:
                System.out.println("Grade: F");
                break;
        }
    }
}
profile
공부 기록

0개의 댓글