[英]how do I add unary operator for RPN algorithm that calculates postfix expression in java
我必須創建一個計算后綴表達式的應用程序。 我可以在網上找到它( rosetta代碼 ),但是它缺少一元運算符。 符號“〜”應該表示我嘗試添加的一元運算符,但不幸的是它沒有用。 請指教;
else if(token.equals("~")){
System.out.print("Operate\t\t");
double firstOperand = stack.pop();
stack.push(firstOperand * -1);
}else
一元~
未定義為雙精度值。 因此,不建議通過以下方式支持操作員:
…
try {
tokenNum = Double.parseDouble( token );
}
catch( NumberFormatException e ) {
if( token.startsWith( "~" ) ) {
tokenNum = (double) ~ Integer.parseInt( token.substring( 1 ) );
token = tokenNum.toString();
}
}
…
return( expr.replaceAll( "[^\\^\\*\\~\\+\\-\\d/\\s]", "" ) ); // cleanExpr
因此,RPN語言7th不支持一元~
。 您必須致電例如。 2 not
代替~2
。
Rosetta代碼中的上述更改沒有停止一切
evalRPN( "~3 ~4 ~2 * ~1 ~5 - ~2 ~3 ^ ^ / +" );
給
Input Operation Stack after
~3 Push [-4.0]
~4 Push [-5.0, -4.0]
~2 Push [-3.0, -5.0, -4.0]
* Operate [15.0, -4.0]
~1 Push [-2.0, 15.0, -4.0]
~5 Push [-6.0, -2.0, 15.0, -4.0]
- Operate [4.0, 15.0, -4.0]
~2 Push [-3.0, 4.0, 15.0, -4.0]
~3 Push [-4.0, -3.0, 4.0, 15.0, -4.0]
^ Operate [0.012345679012345678, 4.0, 15.0, -4.0]
^ Operate [1.017262041564032, 15.0, -4.0]
/ Operate [14.745463201337605, -4.0]
+ Operate [10.745463201337605]
Final answer: 10.745463201337605
與第7個結果相同
ok> 3 not 4 not 2 not * 1 not 5 not - 2 not 3 not y^x y^x / +
ok> .s
› 10,7454632
——
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.