JAVA對只含有乘與加的表示式計算

2021-08-19 10:20:48 字數 831 閱讀 1585

題目簡化描述:對於只含有+與*的表示式進行,按「順序」計算【從左往右依次計算】以及按照「正常」方式計算。

例如:1*1+2*2

按照順序計算=6.

按正常方式計算=5

**如下:

主程式:

public static void main(string arg)

// 順序計算

public static int ordercal(char opestr)

stackstack = new stack<>();

// 將第乙個值進棧

stack.push(opestr[0] - 48);

// 迴圈從i=1開始,因為i=0時將會導致opestr[i - 1]陣列越界。

for (int i = 1; i < opestr.length; i++)

else}}

// 最終棧內只有乙個值,這個值就是最終的求和結果

return stack.pop();

}// 正常計算,思路是:將乘法先計算,將加法資料壓到棧中最後進行統一計算。

public static int normalcal(char opestr)

stackstack = new stack<>();

stack.push(opestr[0] - 48);

for (int i = 1; i < opestr.length; i++)}}

int sum = 0;

// 遍歷stack,棧內的元素都是待加的元素,累加,即可求得最終值

for (integer integer : stack)

return sum;}}

中綴表示式與字尾表示式的轉換

從最簡單的例子出發 1 2 3 4 轉換成字尾表示式 1 2 3 4 關鍵是要理解 字尾表示式是借用堆疊的 先出來實現運算的,即 上述的表示式可以以佇列形式寫出,然後借用堆疊進行計算 如果是運算元,壓棧,如果是操作符,一次性彈出兩個,分別是運算元2和運算元1 在理解這個原因的基礎上,再看,中綴和字尾...

表示式求值的java實現

對整數表示式求值.表示式中可能包含 四則運算,以及括號,比如 4 2 3 10 5,1 2 4 5 9 7 等.思路 將括號之間的內容當做子表示式求值,得出子表示式的結果後就可以去掉括號了.使用optr棧儲存運算子,opnd棧儲存運算元.解析表示式,如果得到運算元就存入opnd棧中,如果得到運算子,...

中綴表示式與字首 字尾表示式的轉換

中綴表示式 便於人看 字首表示式 又稱波蘭式,運算子在前邊,運算數在後邊 字尾表示式 又稱逆波蘭式,運算數在前邊,運算子在後邊 一 中綴表示式轉換字首表示式 1 初始化兩個棧,s1 存放數字 s2 存放運算子 2 表示式右邊開始,遍歷表示式 3 遇到數字放入 s1中,遇到運算子放入 s2中,放入法則...