给出如下表达式:
4*x+16-455
我需要能够单独检索令牌。因此,我需要:
4
*
x
+
16
-
455
我不能只使用“nextInt()”因为它是一个字符串 - 我怎么能绕过这个?我考虑过运算符分割,然后在两者之间交替应该工作,但似乎应该有一种更简单的方法来做到这一点。
答案 0 :(得分:0)
读取整个字符串并将其拆分为标记的最简单方法。您可以通过regexp选择令牌。您的示例可以通过以下正则表达式解析为令牌:
String s = "4*x+16-455";
Pattern p = Pattern.compile("([0-9]+|[a-z]+|[*//+//-])");
Matcher m = p.matcher(s);
while(m.find()) {
System.out.println(m.group());
}
输出:
4
*
x
+
16
-
455
如果您需要更多具有许多不同令牌的聪明分割器,请考虑修改regexp或更好地使用Interpreter模式使您的解决方案更具可读性。