问题描述
我想将字符串行标记为令牌(存储在String表中),我只能使用java.io. *
是要实现一个计算器。
例如:
第一行:1 + 2 + 3
第二行:1+ 2 * 3(这在令牌之间有空格)
进入表格{\“ 1 \”,\“ + \”,\“ 2 \”,\“ + \”,\“ 3 \”}
我想过拆分任何创意吗?
解决方法
提示:使用
java.io.StreamTokenizer
,除了manji所说的之外,如果您真的想实现一个计算器,则需要在标记化令牌之后解析它们。
例如,如果您有表达式:
1 + 2 + 3 *(4 + 5)
您需要创建一个抽象语法树,以便正确评估该表达式。
仅正则表达式不足以完全解决此问题。
,这很容易完成。
String text = \"1+2+3\";
StringBuilder seperatedString = new StringBuilder();
char[] chars = text.toCharArray();
for (int i = 0; i < chars.length; i++) {
char aChar = chars[i];
if(!Character.isSpaceChar(aChar)) {
seperatedString.append(aChar).append(\",\");
}
}
System.out.println(\"The tokenized string\"+ seperatedString);
或者您可以使用正则表达式,如@glowcoder提到的那样。当被问及如何了解正则表达式时,您可以说您使用过RegexBuddy。
,要扫描输入,我建议使用java.util.Scanner。