본문 바로가기
Programming Language/Java

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

by wo__ongii 2024. 10. 8.
728x90
반응형
조건문은 프로그램의 흐름을 제어하고, 특정 조건에 따라 다른 코드 블록을 실행하도록 하는 매우 중요한 구조이다. 조건문을 활용하면 주어진 조건이 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();
}

}

 

728x90
반응형