我正在尝试用java构建计算器。为了构建它,我必须将每个整数分成数组。我使用split("\\+")
在“+”符号之前和之后划分了每个整数。
但其他运营商呢?使用“+”时可以使用“ - ”,“/”,“*”吗?
答案 0 :(得分:2)
好吧,回答你的问题(你必须通过\\
逃避一些运营商):
"1+2-3/4".split("[+\\-*/]")
然而,这会丢弃运营商,因此您需要更复杂的东西。您也可能想要支持浮点数。最后但并非最不重要的是,一旦完成解析,请记住运算符优先级。
答案 1 :(得分:0)
在这种情况下,您可以使用
for(char ch : "1+2-3/4".toCharArray()) {
System.out.println(ch);
}
如果您想要多位数字和负数,即-1+-2
过去我使用enum based state machine来解析测试。一旦有了令牌流,就可以建立优先规则。
答案 2 :(得分:0)
由于您已将问题区域提及为计算器,我认为使用堆栈来拆分操作数和运算符并评估表达式会更合适。
检查许多此类案例中使用的着名算法here