【发布时间】:2019-08-02 07:00:58
【问题描述】:
我必须创建一个计算后缀表达式的应用程序。我可以在网上找到它(rosetta code),但它缺少一元运算符。符号“~”应该表示我尝试添加它的一元运算符,但不幸的是它不起作用。请指教;
else if(token.equals("~")){
System.out.print("Operate\t\t");
double firstOperand = stack.pop();
stack.push(firstOperand * -1);
}else
【问题讨论】:
-
“没用”应该得到像“纠正它”这样的答案。更多信息可能会有所帮助。无论如何:double 的否定只是
-firstOperand,不需要使用任何数学方法。顺便说一句,您为什么要从堆栈中获取 两个 值,只需要一个。 -
如果您尝试使用相同的符号 ('-') 进行二元减法和一元否定,则会产生内在歧义。
-
嘿卡洛斯,就像戴夫说的我必须做出区分。反向波兰表示法也相当混乱,但你的意思是像这样写“stack.push(firstOperand * -1);”
-
我刚刚编辑了它,我相信它可以工作,但老实说我不知道后缀是 (7 5 3 - - ~~~),我得到的最终答案是 -5。跨度>
-
3-5 = -2, -7 = -9,三个符号反转 = +9。所以你的减法代码已经有问题了。请注意,操作数以错误的顺序从堆栈中取出,如中缀所示。
标签: java unary-operator rpn