Java實現四則運算表示式計算

2021-06-07 21:39:15 字數 1237 閱讀 3635

/**

* 四則運算表示式計算

* @author penli

* */

public class arithmetic

public static double arithmetic(string exp)

/*** 解析計算四則運算表示式,例:2+((3+4)*2-22)/2*3

* @param expression

* @return

*/public static string parseexp(string expression)

//計算不帶括號的四則運算

string noparentheses="^[^\\(\\)]+$";

string prioroperatorexp="(((\\d+(\\.\\d+)?)|(\\[\\-\\d+(\\.\\d+)?\\]))[\\*\\/]((\\d+(\\.\\d+)?)|(\\[\\-\\d+(\\.\\d+)?\\])))";

string operatorexp="(((\\d+(\\.\\d+)?)|(\\[\\-\\d+(\\.\\d+)?\\]))[\\+\\-]((\\d+(\\.\\d+)?)|(\\[\\-\\d+(\\.\\d+)?\\])))";

if(expression.matches(noparentheses))else

}return parseexp(expression);

} //計算帶括號的四則運算

string minparentheses="\\([^\\(\\)]+\\)";

pattern patt=pattern.compile(minparentheses);

matcher mat=patt.matcher(expression);

if(mat.find())

return parseexp(expression);

} /**

* 計算最小單位四則運算表示式(兩個數字)

* @param exp

* @return

*/public static string calculate(string exp)else if("-".equals(operator))else if("*".equals(operator))else if("/".equals(operator))

return result!=null?result.tostring():null;

}}

棧 四則運算表示式實現

棧的乙個常見應用,四則運算表示式求值。主要有兩個步驟 1,中綴轉字尾 2,字尾求值 實現起來比較簡單,我通過c 的容器stack實現一遍。從左到右遍歷中綴表示式的每個數字和符號,若是數字就輸出,即稱為字尾表示式的一部分,若是符號,則判斷其與棧頂符號的優先順序,是右括號或優先順序低於棧頂符號 乘除優先...

四則運算表示式求值

03 四則運算表示式求值 輸入輸入為四則運算表示式,僅由陣列 四則運算符 左右括號組成,不含空格。假設運算子結果都是整數。輸出輸出這個表示式的值 分析首先我們要搞清楚表示式的定義是什麼 表示式 由乙個或者多個項組成,多個項的表示式由 連線 項 由乙個或者多個因子組成,多個因子由 連線 因子 由 表示...

四則運算表示式求值

表示式求值是關於棧的應用,涉及到中綴與字尾式的轉換,本文關於10以內不帶括號的四則運算。9 3 4 x 3 24 1 x 9 5 9 9 5 x 9 4 6 2 x 3 1 42 思路 遇到數字直接入數字棧。遇到運算子,第乙個運算子直接入符號棧,後面的需要與符號棧棧頂元素比較優先順序。若當前優先順序...