Comparar el valor de enumeración

este es un gato :

La implementación de una calculadora infija a Postfix y necesidad de comprobar si un operador tiene una prioridad más baja que otra. Esto es lo que tengo hasta ahora:

public enum Operators {

    ADD('+', 2), SUBTRACT('-', 2), MULTIPLY('*', 4), DIVIDE('/', 4);

    private char operator;
    private int precedence;

    Operators(char operator, int precedence) {
        this.operator = operator;
        this.precedence = precedence;
    }

    public char getOperator() {
        return operator;
    }

    public int getPrecedence() {
        return precedence;
    }
}

private static boolean isOperator(char c) {
    return c == Operators.ADD.getOperator() || c == Operators.SUBTRACT.getOperator()
            || c == Operators.MULTIPLY.getOperator() || c == Operators.DIVIDE.getOperator();
}

private static boolean isLowerPrecedence(char ch1, char ch2) {
    // STUCK HERE
}

He intentado una serie de cosas diferentes para comprobar la procedencia del carbón que se pasa, pero en vano. ¿Hay una manera fácil de comparar dos valores de una enumeración? Voy a tener que crear un bucle?

ernest_k:

Es fácil comparar si tiene un método que traduce un "operador" chara un valor de enumeración.

Por ejemplo:

static Operators getOperatorForChar(char op) {
    for(Operators val: values())
        if(op == val.operator)
            return val; //return enum type

    return null;
}

Y entonces se puede poner en práctica su método usando:

private static boolean isLowerPrecedence(char ch1, char ch2) {

    //assuming intention is to compare precedence of ch1 to that of ch2
    return getOperatorForChar(ch1).precedence < getOperatorForChar(ch2).precedence;
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=208133&siteId=1
Recomendado
Clasificación