我正在开发一个使用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) {
//...
}
答案 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) {
}