我正在尝试用java构建计算器。为了构建它,我必须将每个整数拆分为数组。我在“+”号之前和之后划分了每个整数,使用split("\\+")
.
但是其他运营商呢?我可以在使用“+”的同时使用“-”、“/”、“*”吗?
我正在尝试用java构建计算器。为了构建它,我必须将每个整数拆分为数组。我在“+”号之前和之后划分了每个整数,使用split("\\+")
.
但是其他运营商呢?我可以在使用“+”的同时使用“-”、“/”、“*”吗?
好吧,要回答您的直接问题(您必须使用 转义一些运算符\\
):
"1+2-3/4".split("[+\\-*/]")
但是,这会丢弃运算符,因此您需要更复杂的东西。此外,您可能希望支持浮点数。最后但同样重要的是,一旦完成解析,请记住运算符优先级。
在这种情况下,您可以使用
for(char ch : "1+2-3/4".toCharArray()) {
System.out.println(ch);
}
如果你想要多位数字和负数,你需要编写一个简单的解析器,即-1+-2
过去我使用基于枚举的状态机来解析测试。一旦你有一个令牌流,你就可以建立优先规则。
既然你提到你的问题领域是计算器,我认为使用堆栈来拆分操作数和运算符并评估表达式会更合适。
在此处查看许多此类案例中使用的著名算法