본문 바로가기
Programming Language/Java

[Java/개념] 조건문 (if ~ else / switch)

by woongii 2024. 10. 8.
조건문은 프로그램의 흐름을 제어하고, 특정 조건에 따라 다른 코드 블록을 실행하도록 하는 매우 중요한 구조이다. 조건문을 활용하면 주어진 조건이 true인지 false인지에 따라 프로그램의 동작을 다르게 만들 수 있다. 자바에서 가장 많이 사용하는 조건문으로는 if-else문과 switch문이 있다.
  • if ~ else문은 범위 기반의 조건 처리가 필요할 때 사용하기 좋다.
  • switch문은 특정 값에 따라 분기 처리를 할 때 효율적이며, 주로 정수형, 문자열 등의 고정된 값 비교에 적합하다.
  • 두 조건문 모두 자바 프로그램에서 흐름 제어에 필수적인 역할을 한다.

1. if ~ else문

if-else 문은 특정 조건이 참(true)일 때는 해당 블록을 실행하고, 그렇지 않으면 else 블록을 실행한다. 조건이 여러 개일 경우 else if 문을 사용하여 조건을 추가할 수 있다. 중괄호 {}는 명령어가 한 줄일 때 생략할 수 있지만, 코드의 가독성을 위해 가능하면 사용하는 것이 좋다.

if (조건식) {
   // 조건이 true일 때 실행되는 영역
} else {
   // 조건이 false일 때 실행되는 영역
}

 

[예시: 점수에 따른 학점 계산]

다음 코드는 점수를 입력받아 해당 점수에 맞는 학점을 출력하는 프로그램입니다.

import java.util.Scanner;

public class IfQuizExplain03 {

	public static void main(String[] args) {
		
		char grade = ' '; //변수선언
		char option = '0';
		
		Scanner input = new Scanner(System.in);
		
		System.out.println("점수를 입력하세요 >> ");
		int score = input.nextInt();
		
		if(score % 10 >= 7 || score == 100) //100인 경우는 흔치 않으니 뒤로 넣어준다.
			option = '+';
		else if(score % 10 <= 3)
			option = '-'; 
		
		if(score >= 90) 
			grade = 'A';
		else if(score >= 80) 
			grade = 'B';
		else if(score >= 70) 
			grade = 'C';
		else {
			grade = 'F';
			option = ' ';
		}
		//System.out.println("학점은 "+ grade + option + "입니다");
		//문자열 뒤에 + 더하기는 concat(이어주는)이라는 메소드로 바뀐다
		
		System.out.printf("학점은 %s%s입니다.\n", grade, option);

		input.close();
		
		}
		
	}

 

위 코드에서는 점수에 따라 A, B, C, F 학점을 부여하며, 점수의 마지막 자리 수에 따라 + 또는 -를 부여한다.

  • 조건이 3개 이상일 때는 if-else if-else 문을 사용하여 순차적으로 조건을 평가합니다.
  • else는 모든 조건이 해당되지 않을 때 실행됩니다.

자주 사용되는 서식 문자

  • %d: 정수 출력
  • %f: 실수 출력
  • %c: 문자 출력
  • %s: 문자열 출력
+) printf 메소드 내에서 사용 하는 [서식 문자]
%d : 정수
%f : 실수
%c : 문자
%s : 문자열
%c는 콤마 옆의 순서 대로 지정된다.

 

위 코드에서는 점수에 따라 A, B, C, F 학점을 부여하며, 점수의 마지막 자리 수에 따라 + 또는 -를 부여합니다.

추가 설명

  • 조건이 3개 이상일 때는 if-else if-else 문을 사용하여 순차적으로 조건을 평가합니다.
  • else는 모든 조건이 해당되지 않을 때 실행됩니다.

자주 사용되는 서식 문자

  • %d: 정수 출력
  • %f: 실수 출력
  • %c: 문자 출력
  • %s: 문자열 출력

2. switch문

switch 문은 주어진 표현식의 결과값에 따라 여러 케이스 중 하나를 실행한다. 조건이 특정 값에 맞을 때마다 코드가 실행되며, 해당 값이 없으면 default 블록이 실행된다. switch 괄호 안에 조건에는 1. 정수값 2. 변수 3. 간단한 식이 올 수 있다.

switch (식 또는 변수) {
    case 값1:
        // 명령어;
        break;
    case 값2:
        // 명령어;
        break;
    default:
        // 명령어;
}

 

  • break 키워드는 해당 케이스가 실행된 후 switch문을 종료하는 역할을 합니다.
  • default는 일치하는 값이 없을 때 실행되는 블록입니다.

 

 

[예시1: 조건이 정수인 경우]

public static void main(String[] args) {

    int num = 25;

    switch (num/10) {
    case 0 :
        System.out.println("0이상 10미만의 수");
        break;
    case 1 :
        System.out.println("10이상 20미만의 수");
        break;
    case 2 :
        System.out.println("20이상 30미만의 수");
        break;
    default	:
        System.out.println("30 이상의 수.");
        break;

    }

}

 

[예시2: 조건이 변수인 경우]

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    //1. 정수 2개 입력
    System.out.println("정수를 2개를 입력하시오 >> ");
    int num1 = input.nextInt();
    int num2 = input.nextInt();

    //2. 사칙연산 기호 입력
    System.out.println("사칙연산(+, -, *, /) 중 하나를 입력하시오 >> ");
    String operator = input.next(); //+를 입력했을때 operator는 +라는 이름의 주소로 들어감

    String expression = num1 + operator + num2 + "=";

    switch(operator) {
    case "+":
        System.out.println(expression +((num1 + num2)));
        break;
    case "-":
        System.out.println(expression +((num1 - num2)));
        break;
    case "*":
        System.out.println(expression +((num1 * num2)));
        break;
    case "/":
        System.out.println(expression +((num1 / num2)));
        break;
    default	:
        System.out.println("잘못된 연산자을 입력하였습니다.");
    }

    input.close();

}

 

[예시3: 조건이 '식' 경우]

public static void main(String[] args) {

    //1.랜덤값 생성
    int comp = (int)(Math.random()*3 + 1);
    System.out.println("computer >> " + comp);


    //2. 사용자 입력
    Scanner input = new Scanner(System.in);

    System.out.println("가위(1), 바위(2), 보(3) 중 하나를 입력하시오");
    int user = input.nextInt();

    int result = (user - comp);

    switch(result) {
        case 0 :
            System.out.println("비겼습니다.");
            break;
        case -2: case 1 :
            System.out.println("사용자가 이겼습니다.");
            break;
        case 2: case -1 :
            System.out.println("사용자가 졌습니다");
            break;
        default :
            System.out.println("다시 입력해주세요");
    }

    input.close();
}

}