做个产品网站要多少钱,怎么做网站流量赚钱吗,广东网,公司网站的seo怎么做这是一个四则混合运算程序,没什么做优化,也没做什么注释,(人啊,总喜欢偷懒的.)这个版本我已经定为了2.21版本.呵呵.从最先的1.0到2.0的改动很大.除了运算思想没动处,其它的都在2.0做了重新设计.这种程序其实网上一大把(算法也好得多)。此仅为无聊找点事情做而已。/***四则混合运…这是一个四则混合运算程序,没什么做优化,也没做什么注释,(人啊,总喜欢偷懒的.)这个版本我已经定为了2.21版本.呵呵.从最先的1.0到2.0的改动很大.除了运算思想没动处,其它的都在2.0做了重新设计.这种程序其实网上一大把(算法也好得多)。此仅为无聊找点事情做而已。/***四则混合运算程序*作者:黄剑武*时间:2005年4月29日*版本:2.21*修改日志:2.0* 1.更改表达式用户输入方式.* 2.对用户输入的表达式进行有效性字符过滤.* 3.使用double代替原int数值,并且使用严格浮点运算提高运算精度.* 4.解除对运算数字只能是一位的限制.* 5.优化了部分代码.*修改日志:2.1* 1.加入表达式括号匹配功能.*修改日志:2.2* 1.加入表达式处理功能.*修改日志:2.21* 1.修改部分语法以支持jdk1.5中的泛型用法.*/import java.lang.reflect.array;import java.util.*;import java.util.regex.*;import java.lang.*;import java.io.*;//测试用例:1-3*(4-(25*3)5)-6/(12)23//测试用例:11.23.1*(423-(25.7*3.4)5.6)-6.4/(15.524)1273.4199746835445class calculator{public static void main(string[] args) throws ioexception{string str_input;double f_output;while (true){system.out.print(“输入表达式: “);system.out.flush();str_input getstring();if (str_input.equals(“”)){break;}calculator calculator new calculator();//以下对输入字符串做规则处理str_input calculator.checkexpression(str_input);if (str_input.equals(“”)){system.out.println(” 表达式出错 “);}//以下对输入字符串做表达式转换vector v_compute calculator.getexpression(str_input);/*for (int i0;i{system.out.println(” “v_compute.get(i));}*///以下进行后缀表达式转换vector v_tmp_prefix calculator.transformprefix(v_compute);/*for (int i0;i{system.out.println(v_tmp_prefix.get(i));}*///以下进行后缀表达式运算f_output calculator.evaluateprefix(v_tmp_prefix);system.out.println(“结果 ” f_output);}}/***静态方法,用来从控制台读入表达式*/public static string getstring() throws ioexception{inputstreamreader isr new inputstreamreader(system.in);bufferedreader br new bufferedreader(isr);string s br.readline();return s;}/***输入字符串转换.把从控制台读入的字符串转成表达式存在一个队列中.*例:123321 存为”123″”””321″*/public vector getexpression(string str){vector v_temp new vector();char[] temp new char[str.length()];str.getchars(0,str.length(),temp,0);string fi “”;int x0,i0;string regex_fig “[\\.\\d]”; //匹配数字和小数点string regex_operator “[\\\\-\\*/\\(\\)]”; //匹配运算符(,-,*,/)和括号(“(“,”)”)pattern p_fig pattern.compile(regex_fig);pattern p_operator pattern.compile(regex_operator);matcher m null;boolean b;while (i{character c new character(temp[i]);string s c.tostring();//system.out.println(“char c “s);m p_operator.matcher(s);b m.matches();if (b){//system.out.println(“matches operator”);v_temp.add(fi);fi””;v_temp.add(s);}m p_fig.matcher(s);b m.matches();if (b){//system.out.println(“matches fig”);fifis;}i;}v_temp.add(fi);return v_temp;}/***转换中序表示式为前序表示式*/public vector transformprefix(vector v_expression){vector v_prefix new vector();stack s_tmp new stack();string regex_float “\\d(\\.\\d)?”; //匹配正浮点数pattern p_float pattern.compile(regex_float);matcher m null;boolean b;string str_elem “”;for (int i0;i{str_elem v_expression.get(i).tostring();m p_float.matcher(str_elem);b m.matches();if (b){v_prefix.add(str_elem);}if (str_elem.equals(“”)||str_elem.equals(“-“)){if (s_tmp.isempty()){s_tmp.push(str_elem);}else{while(!s_tmp.isempty()){string str_tmp s_tmp.peek();if ( str_tmp.equals(“(“)){break;}else{v_prefix.add(s_tmp.pop());}}s_tmp.push(str_elem);}}if (str_elem.equals(“*”)||str_elem.equals(“/”)){if (s_tmp.isempty()){s_tmp.push(str_elem);}else{while(!s_tmp.isempty()){string str_tmp s_tmp.peek();if ( str_tmp.equals(“(“) || str_tmp.equals(“”) || str_tmp.equals(“-“)){break;}else{v_prefix.add(s_tmp.pop());}}s_tmp.push(str_elem);}}if (str_elem.equals(“(“)){s_tmp.push(str_elem);}if (str_elem.equals(“)”)){while(!s_tmp.isempty()){string str_tmp s_tmp.peek();if (str_tmp.equals(“(“)){s_tmp.pop();break;}else{v_prefix.add(s_tmp.pop());}}}}while(!s_tmp.isempty()){v_prefix.add(s_tmp.pop());}return v_prefix;}/***前缀表示式求值*/public strictfp double evaluateprefix(vector v_prefix){string str_tmp “”;double num1,num2,interans 0;stack s_compute new stack();int i 0;while(i{str_tmp v_prefix.get(i).tostring();if (!str_tmp.equals(“”) !str_tmp.equals(“-“) !str_tmp.equals(“*”) !str_tmp.equals(“/”)){interans s_compute.push(double.parsedouble(str_tmp));}else{num2(double)(s_compute.pop());num1(double)(s_compute.pop());if (str_tmp.equals(“”)){interans num1num2;}if (str_tmp.equals(“-“)){interans num1-num2;}if (str_tmp.equals(“*”)){interans num1*num2;}if (str_tmp.equals(“/”)){interans num1/num2;}s_compute.push(interans);}i;}return interans;}/***括号匹配检测*/public boolean checkbracket(string str){stack s_check new stack();boolean b_flag true;for (int i0;i{char ch str.charat(i);switch(ch){case (:s_check.push(ch);break;case ):if (!s_check.isempty()){char chx s_check.pop();if (ch) chx!(){b_flag false;}} else {b_flag false;}break;default:break;}}if (!s_check.isempty()){b_flag false;}return b_flag;}/***表达式正确性规则处理与校验*/public string checkexpression(string str){stack s_check new stack();stack s_tmp new stack();string str_result “”;string str_regex “^[\\.\\d\\\\-\\*/\\(\\)]$“; //匹配合法的运算字符”数字,.,,-,*,/,(,),”pattern p_filtrate pattern.compile(str_regex);matcher m p_filtrate.matcher(str);boolean b_filtrate m.matches();if (!b_filtrate){str_result “”;return str_result;}string str_err_float “.*(\\.\\d*){2,}.*”; //匹配非法的浮点数.pattern p_err_float pattern.compile(str_err_float);matcher m_err_float p_err_float.matcher(str);boolean b_err_float m_err_float.matches();if (b_err_float){str_result “”;return str_result;}for (int i0;i{char ch str.charat(i);if (checkfig(ch)){if (!s_tmp.isempty()s_tmp.peek())){str_result “”;return str_result;}s_tmp.push(ch);str_result str_resultch;}switch(ch){case (:if (!s_tmp.isempty()s_tmp.peek().){str_result “”;return str_result;}s_check.push(ch);if (s_tmp.isempty()||(!this.checkfig(s_tmp.peek())s_tmp.peek()!))){str_result str_resultch;} else {str_result str_result”*”ch;}s_tmp.push(ch);break;case ):if (!s_check.isempty()){char chx s_check.pop();if (ch) chx!(){str_result “”;return str_result;}} else {str_result “”;return str_result;}if (s_tmp.peek().||(!this.checkfig(s_tmp.peek())s_tmp.peek()!))){str_result “”;return str_result;}s_tmp.push(ch);str_result str_resultch;break;case :case -:if (!s_tmp.isempty()(s_tmp.peek()||s_tmp.peek()-||s_tmp.peek()*||s_tmp.peek()/||s_tmp.peek().)){str_result “”;return str_result;}if (s_tmp.isempty()||s_tmp.peek()(){str_result str_result”0″ch;} else {str_result str_resultch;}s_tmp.push(ch);break;case *:case /:if (s_tmp.isempty()||s_tmp.peek().||(!this.checkfig(s_tmp.peek())s_tmp.peek()!))){str_result “”;return str_result;}s_tmp.push(ch);str_result str_resultch;break;case .:if (s_tmp.isempty()||!this.checkfig(s_tmp.peek())){str_result str_result”0″ch;} else {str_result str_resultch;}s_tmp.push(ch);break;default:break;}}if (!s_check.isempty()){str_result “”;return str_result;}return str_result;}private static boolean checkfig(object ch){string s ch.tostring();string str_regexfig “\\d“; //匹配数字pattern p_fig pattern.compile(str_regexfig);matcher m_fig p_fig.matcher(s) ;boolean b_fig m_fig.matches();return b_fig;}};