TIL

Java - Enum으로 문자열 입력값과 연산자를 매칭하기

chungmani 2026. 6. 19. 21:41

문제 상황

계산기 만드는 과제중 연산 기호는 enum으로 처리하도록 코드를 짜보았다.

enum 이론만 알고, 실제로 코드 구현은 처음이라 많이 해맸음.

 


 

내 자바인생 첫 enum 코드 ㅋㅋ

이거면 된거 아니가?? 라고 생각했음 

 

각 연산기호 상수를 만들고 인자에다가 입력값과 동일한 문자열을 넣어줌.

사실 여기까지 이해하는데도 좀 오래 걸림;;

public enum OperatorType {
    ADD("+"),
    SUBTRACT("-"),
    MULTIPLY("*"),
    DIVIDE("/");

    private String operator;

    OperatorType(String operator) {
        this.operator = operator;
    }

    public String getOperator() {
        return operator;
    }
}

 

이제 enum은 만들었으니까,

enum 상수의 인자값이랑 사용자가 입력한 값이랑 매칭만 되면 되겠구나만 생각함.

근데 사실 여기서 상수값(ADD, SUBRTACT, MULTIPLY, DIVIDE)이

스위치문에서 입력값이랑 자동으로 매칭되는줄 잘못생각했다.

 

근데 안돼서 개뻘짓함..

 


해결 방법

public static OperatorType findValue(String cal) {
        for (OperatorType value : OperatorType.values()) {
            if (value.getOperator().equals(cal)) {
                return value;
            }
        }
        return null;
}
향상된 for문으로 각 값을 돌면서 사용자가 입력한 값이랑 매칭되는지 본다.
입력한 값이랑 인자값이랑 매칭되면 반환.
 
values()는 enum의 상수값을 배열로 만들어주는 메서드임!
 
근데 이 코드에서 한가지 수정해야 할 부분은 
return null; 값이다!
튜터님이 이건 좋지않다고 했음..
다음에는 이 코드도 수정해보는걸로!