본문 바로가기
(2024-10) 스파르타 내일배움캠프 - 백엔드/Java 기초문법

Enum에 대해

by 어뫄어뫄 2024. 11. 19.

Java Enum을 활용한 연산자 구현하기

Java의 enum은 단순히 상수를 정의하는 것을 넘어, 각 상수에 고유한 동작과 데이터를 부여할 수 있게 해줍니다. enum을 활용하여 계산기에서 다양한 연산을 구현하는 방법을 살펴보겠습니다.

 

기본적인 Enum 사용법

Java에서 enum은 열거형 데이터 타입으로, 상수들의 집합을 정의하는 데 유용합니다. 가장 기본적인 사용 예시는 다음과 같습니다.

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}

public class EnumExample {
    public static void main(String[] args) {
        Day today = Day.WEDNESDAY;
        System.out.println("Today is: " + today);
        Day wrongDay = Day.NEWDAY; // 컴파일에러
    }
}

 

이 간단한 예제는 Day라는 열거형을 정의하고, 특정 요일을 변수로 설정하는 방법을 보여줍니다.

 

Enum에 메서드와 필드 추가하기

enum을 사용하면 각 상수에 고유한 메서드와 필드를 추가할 수 있습니다. 이를 통해 상수마다 다른 동작을 정의할 수 있습니다. 아래 예제는 Operation이라는 연산자를 정의하고, 각 연산자에 따라 다른 수학적 계산을 수행하게 합니다.

public enum Operation {
    PLUS("+") {
        public double apply(double x, double y) {
            return x + y;
        }
    }, // 정확한 말은 아니지만, 마치 상수 인스턴스 작동(생성자, 상속)을 미리 정의하는 것과 같다.
    MINUS("-") {
        public double apply(double x, double y) {
            return x - y;
        }
    },
    TIMES("*") {
        public double apply(double x, double y) {
            return x * y;
        }
    },
    DIVIDE("/") {
        public double apply(double x, double y) {
            if (y == 0) {
                throw new ArithmeticException("Cannot divide by zero");
            }
            return x / y;
        }
    };

    private final String symbol;

    Operation(String symbol) {
        this.symbol = symbol;
    }

    public String getSymbol() {
        return symbol;
    }

    public abstract double apply(double x, double y);

    public static Operation fromSymbol(String symbol) {
        for (Operation op : Operation.values()) {
            if (op.getSymbol().equals(symbol)) {
                return op;
            }
        }
        throw new IllegalArgumentException("Invalid operation symbol: " + symbol);
    }
}

 

 Operation enum은 각 연산자에 대해 기호와 연산 동작을 정의합니다. 예를 들어, PLUS는 덧셈을 수행하며, DIVIDE는 나눗셈을 수행하지만 0으로 나누기를 방지하는 예외 처리가 포함되어 있습니다.

 

사용자 입력을 받아 연산 수행하기

이제 사용자 입력을 받아서 Operation enum을 활용하여 연산을 수행하는 방법을 보여드리겠습니다.

import java.util.Scanner;

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

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

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

        System.out.println("Enter the operation (+, -, *, /): ");
        String operationInput = scanner.next();

        try {
            Operation operation = Operation.fromSymbol(operationInput);
            double result = operation.apply(num1, num2);
            System.out.println("Result: " + num1 + " " + operation.getSymbol() + " " + num2 + " = " + result);
        } catch (IllegalArgumentException e) {
            System.out.println(e.getMessage());
        }

        scanner.close();
    }
}

 

마무리

Java의 enum은 단순한 상수를 넘어 더욱 복잡한 기능을 제공함으로써, 코드의 가독성과 유지보수성을 크게 향상시킵니다. 특히 각 상수에 고유한 동작과 데이터를 부여할 수 있다는 점에서 매우 강력한 도구가 됩니다. 이번 포스트를 통해 enum을 보다 유용하게 활용하는 방법을 이해하고, 실제 프로젝트에 적용해볼 수 있기를 바랍니다.

'(2024-10) 스파르타 내일배움캠프 - 백엔드 > Java 기초문법' 카테고리의 다른 글

클래스  (0) 2024.10.29