我創建在Java中的計算器和我在努力想出一種方法來處理負數負數,到目前爲止,我可以解析表達式,比如這個:Java的計算器,如何處理
((4-3)*(4/2))*2
變爲:
[4.0, -3.0, +, 4.0, 2.0, /, *, 2.0, *]
但是我不知道我應該怎樣處理含底片,如表情:
2*(-2-3)
到目前爲止,我有這麼當遇到一個負值,它由-1在它前面的相乘的數量,並增加了+到列表的末尾,這樣的表達變成這樣:
[2.0, -2.0, -3.0, +, +, *]
這是在我的程序中造成很多錯誤,誰能幫助我們用更好的方法來處理負面問題。
非常感謝您的幫助
你可以通過在任何否定之前添加0來處理它。因此,'2 *( - 2-3)'會變成'2 *(0-2-3)'。 – sp00m
感謝您的快速回復,我試過這個,但是當我有一個像8 * -2這樣的表達式時,我得到了列表[8.0,0.0,*,-2.0,+]這會導致-2 – user3120023
的答案,那麼你解析它錯誤,8 * -2應該是[8,0,2, - ,*],你讀8 => [8],你讀*然後你調用解析下一個參數,你讀 - 和2 = > [8,0,2, - ],現在你完成了* => [8,0,2, - ,*] – Vladp