我正在制作一个计算器,该程序的一部分接受用户String
输入并将其标记化(使用我自己的Tokenizer
类实现)。所以现在我有一堆Token
对象,我想测试它们中的每一个,看看它们是否包含数字或运算符。
有没有一种方法可以测试它们是否包含运算符(即 +、-、*、/、=、(、) 等)而不使用
if (token.equals("+") || token.equals("-") || ...
等,对于每个运算符?这些Token
对象都是 type String
。
我正在制作一个计算器,该程序的一部分接受用户String
输入并将其标记化(使用我自己的Tokenizer
类实现)。所以现在我有一堆Token
对象,我想测试它们中的每一个,看看它们是否包含数字或运算符。
有没有一种方法可以测试它们是否包含运算符(即 +、-、*、/、=、(、) 等)而不使用
if (token.equals("+") || token.equals("-") || ...
等,对于每个运算符?这些Token
对象都是 type String
。
如果它们都是单字符串,你可以这样做:
if ("+-*/=()".indexOf(token) > -1) {
// if you get into this block then token is one of the operators.
}
您也可以使用数组来保存指示相应标记优先级的值:
int precedence[] = { 2, 2, 3, 3, 1, 4, 4 }; // I think this is correct
int index = "+-*/=()".indexOf(token);
if (index > -1) {
// if you get into this block then token is one of the operators.
// and its relative precedence is precedence[index]
}
但是由于这一切都假设操作员只有一个字符,所以这是您可以采用这种方法的最大程度。
您也可以为此使用 String contains。
String operators = "+-*/=()";
String token ="+";
if(operators.contains(token)){
System.out.println("here");
}