检查对象枚举的布尔结果

时间:2013-12-22 02:04:27

标签: java enums boolean

我正在开发一个使用Shunting-Yard算法的程序。

我无法检查令牌是否为数字,操作员,右支撑和左支撑。我在令牌类中有一个正确设置的枚举,但是如果它是一个类型,我怎么能返回一个布尔检查呢?

来自令牌类:

enum TokenType {
    Nothing, Number, Operator, LeftBrace, RightBrace
};

代码给我带来问题,如果枚举设置为数字我希望它在第一次测试时返回true而在第二次测试时返回false。

if (inputTokenized[index].getTokenType().Number) {
    //...
} else if(inputTokenized[index].getTokenType().LeftBrace) {
    //...
}

看起来我想通了。

if (inputTokenized[index].getTokenType().Number == Token.TokenType.Number) {
    //...
} else if(inputTokenized[index].getTokenType().LeftBrace == Token.TokenType.LeftBrace) {
    //...
}

2 个答案:

答案 0 :(得分:0)

您可以将所有逻辑保留在枚举类中:

public enum TokenType {
    NOTHING, NUMBER, OPERATOR, LEFT_BRACE, RIGHT_BRACE;

    public static TokenType getType(char c){
        if(Character.isDigit(c))
            return NUMBER;
        // ... implement other types
        else
            return NOTHING;
    }
}

然后你可以检查某个角色是否属于某种类型

TokenType.getType('5') == TokenType.NUMBER           // true
TokenType.getType('5') == TokenType.LEFT_BRACE       // false

答案 1 :(得分:0)

if (inputTokenized[index].getTokenType().Number == Token.TokenType.Number) {

    } else if(inputTokenized[index].getTokenType().LeftBrace == Token.TokenType.LeftBrace) {

    }