测试String标记的含义

时间:2012-11-25 04:52:55

标签: java

我正在制作一个计算器,该程序的一部分接受用户String输入并对其进行标记(使用我自己的Tokenizer类实现)。所以现在我有一堆Token个对象,我想测试它们中的每一个,看看它们是否包含数字或运算符。

有没有办法测试它们是否包含运算符(即。+, - ,*,/,=,(,)等)而不使用
if (token.equals("+") || token.equals("-") || ...等等,对于每个运营商?这些Token个对象都是String类型。

2 个答案:

答案 0 :(得分:5)

如果他们可以执行所有单字符字符串:

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]

}

但是,由于这一切都假定操作符只有一个字符,所以这就是你可以采用这种方法。

答案 1 :(得分:1)

您也可以使用String contains。

 String operators = "+-*/=()";
String token ="+";

if(operators.contains(token)){

    System.out.println("here");
}