-1

我正在尝试用java构建计算器。为了构建它,我必须将每个整数拆分为数组。我在“+”号之前和之后划分了每个整数,使用split("\\+").

但是其他运营商呢?我可以在使用“+”的同时使用“-”、“/”、“*”吗?

4

3 回答 3

2

好吧,要回答您的直接问题(您必须使用 转义一些运算符\\):

"1+2-3/4".split("[+\\-*/]")

但是,这会丢弃运算符,因此您需要更复杂的东西。此外,您可能希望支持浮点数。最后但同样重要的是,一旦完成解析,请记住运算符优先级。

于 2012-11-28T17:31:28.627 回答
0

在这种情况下,您可以使用

for(char ch : "1+2-3/4".toCharArray()) {
    System.out.println(ch);
}

如果你想要多位数字和负数,你需要编写一个简单的解析器,即-1+-2

过去我使用基于枚举的状态机来解析测试。一旦你有一个令牌流,你就可以建立优先规则。

于 2012-11-28T17:34:09.193 回答
0

既然你提到你的问题领域是计算器,我认为使用堆栈来拆分操作数和运算符并评估表达式会更合适。

在此处查看许多此类案例中使用的著名算法

于 2012-11-28T19:12:44.063 回答