?? tool.java
字號:
/*** <p>Title: </p>* <p>Description: </p>* <p>Copyright: Copyright (c) 2002</p>* <p>Company: </p>* @author LinYueyu* @version 1.0*/import java.util.*;import java.lang.*;public class tool { public tool() { } private double cal(Object operator, double k, double l) { if (operator.equals("+")) l += k; else if (operator.equals("-")) l = l - k; else if (operator.equals("*")) l = l * k; else if (operator.equals("/")) l = l / k; return l; } public double calculate(String fomular) { double dResult = 0; StringTokenizer strTok = new StringTokenizer(fomular, "+-*/()", true); String strElement = new String(); Stack stOperator = new Stack(); Stack stNumber = new Stack(); Object stTop = new Object(); Object stCur = new Object(); int iTop, iCur, i, j; double k, l; Hashtable hsOperator = new Hashtable(); hsOperator.put("+", new Integer(1)); hsOperator.put("-", new Integer(1)); hsOperator.put("*", new Integer(2)); hsOperator.put("/", new Integer(2)); hsOperator.put("(", new Integer(3)); hsOperator.put(")", new Integer(0)); try { while (strTok.hasMoreElements()) { strElement = strTok.nextToken(); if ("+-*/()".indexOf(strElement) != -1) { if (!stOperator.isEmpty()) { stTop = stOperator.peek(); i = ((Integer) (hsOperator.get(stTop))).intValue(); j = ((Integer) (hsOperator.get(strElement))).intValue(); if (j < i && i != 3) { k = Double.parseDouble((String) stNumber.pop()); l = Double.parseDouble((String) stNumber.pop()); stNumber.push(Double.toString(cal(stTop, k, l))); stOperator.pop(); stOperator.push(strElement); if (j == 0) { stOperator.pop(); stTop = stOperator.pop(); while (!stTop.equals("(")) { k = Double.parseDouble( (String) stNumber.pop()); l = Double.parseDouble( (String) stNumber.pop()); stNumber.push( Double.toString(cal(stTop, k, l))); stTop = stOperator.pop(); } } } else { stOperator.push(strElement); } } else { stOperator.push(strElement); } } else { stNumber.push(strElement); } } while (!stOperator.isEmpty()) { stTop = stOperator.pop(); k = Double.parseDouble((String) stNumber.pop()); l = Double.parseDouble((String) stNumber.pop()); stNumber.push(Double.toString(cal(stTop, k, l))); } while (!stNumber.isEmpty()) { System.out.println(stNumber.pop()); } if (!stOperator.isEmpty()) System.out.println("Fomular is Error!"); } catch (Exception e) { } return dResult; } public static void main(String[] args) { tool tool1 = new tool(); String operator = "35*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; operator += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34"; long start = new Date().getTime(); tool1.calculate(operator); System.out.println(new Date().getTime() - start); }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -