Java代码
- package zn.sd.ly.jtree.test;
- /**
- * 表达式
- *
- * @author 风华褚胜--刘胜军
- */
- import java.util.Arrays;
- import java.util.Scanner;
- import java.util.Stack;
- public class Four {
- @SuppressWarnings("resource")
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入标准表达式(exit退出):");
- String str = sc.nextLine();
- while (!str.equals("exit")) {
- if (judge_kuohao(str)) {
- System.out.println("括号匹配成功!");
- System.out.println(jisuan(getHouzhui(f(str))));
- } else {
- System.out.println("括号匹配不成功,或者包含不规则括号!");
- }
- System.out.println("请输入标准表达式(exit退出):");
- str = sc.nextLine();
- }
- }
- /**
- *
- * @param str
- * 传入的完整算术表达试字符串
- * @return 返回boolean值,如果匹配成功,返回true,反之false
- */
- public static boolean judge_kuohao(String str) {
- Stack<Character> s = new Stack<Character>();
- /**********************************/
- char[] ch = new char[128];
- ch[‘1‘] = ‘1‘;
- ch[‘2‘] = ‘2‘;
- ch[‘3‘] = ‘3‘;
- ch[‘4‘] = ‘4‘;
- ch[‘5‘] = ‘5‘;
- ch[‘6‘] = ‘6‘;
- ch[‘7‘] = ‘7‘;
- ch[‘8‘] = ‘8‘;
- ch[‘9‘] = ‘9‘;
- ch[‘0‘] = ‘0‘;
- ch[‘(‘] = ‘(‘;
- ch[‘)‘] = ‘)‘;
- ch[‘[‘] = ‘[‘;
- ch[‘]‘] = ‘]‘;
- ch[‘{‘] = ‘{‘;
- ch[‘}‘] = ‘}‘;
- ch[‘.‘] = ‘.‘;
- ch[‘+‘] = ‘+‘;
- ch[‘-‘] = ‘-‘;
- ch[‘*‘] = ‘*‘;
- ch[‘/‘] = ‘/‘;
- /**********************************/
- for (int i = 0; i < str.length(); i++) {
- char t = str.charAt(i);
- if (t > 128 || ch[t] != t) {
- return false;
- }
- if (t == ‘(‘ || t == ‘[‘ || t == ‘{‘) {
- s.push(t);
- } else if (t == ‘)‘ || t == ‘]‘ || t == ‘}‘) {
- char temp = ‘\u0000‘;
- if (s.size() > 0)
- temp = s.pop();
- else
- return false;
- if (!((temp == ‘(‘ && t == ‘)‘) || (temp == ‘[‘ && t == ‘]‘) || (temp == ‘{‘ && t == ‘}‘))) {
- return false;
- }
- } else {
- }
- }
- if (s.size() != 0)
- return false;
- return true;
- /**********************************/
- }
- /**
- *
- * @param str
- * 传入的完整算术表达试字符串
- * @return 完整算术表达试字符串中每个元素组合而成的数组
- */
- public static Object[] f(String str) {
- Stack<Object> s = new Stack<Object>();
- int left = 0, right = 0, tag = ((str.charAt(0) >= ‘0‘ && str.charAt(0) <= ‘9‘)
- || (str.charAt(0) == ‘.‘) ? 0 : 1);
- for (int i = 0; i < str.length(); i++) {
- char t = str.charAt(i);
- if ((t >= ‘0‘ && t <= ‘9‘) || (t == ‘.‘)) {
- right++;
- tag = 0;
- } else {
- if (left != right) {
- s.push(new Double(str.substring(left, right)));
- left = right;
- }
- right++;
- s.push(str.substring(left, right));
- left = right;
- tag = 1;
- }
- if (right == str.length()) {
- if (left != right) {
- if (tag == 1)
- s.push(str.substring(left, right));
- else
- s.push(new Double(str.substring(left, right)));
- left = right;
- }
- }
- }
- System.out.println(Arrays.toString(s.toArray()));
- return s.toArray();
- }
- /**
- * 获取后缀表达式
- *
- * @param f
- * 完整算术表达试字符串中每个元素组合而成的数组
- * @return 后缀表达式数组
- */
- public static Object[] getHouzhui(Object[] f) {
- Stack<Object> s = new Stack<Object>();
- Stack<Object> n = new Stack<Object>();
- for (int i = 0; i < f.length; i++) {
- if (f[i].equals("(") || f[i].equals("[") || f[i].equals("{")) {
- s.push("(");
- } else if (f[i].equals("*")) {
- while ("/".equals((s.size() > 0) ? s.lastElement() : "")) {
- n.push(s.pop());
- }
- s.push("*");
- } else if (f[i].equals("/")) {
- while ("*".equals((s.size() > 0) ? s.lastElement() : "")) {
- n.push(s.pop());
- }
- s.push("/");
- } else if (f[i].equals("+")) {
- while (("*".equals((s.size() > 0) ? s.lastElement() : ""))
- || ("/").equals((s.size() > 0) ? s.lastElement() : "")
- || ("-").equals((s.size() > 0) ? s.lastElement() : "")) {
- n.push(s.pop());
- }
- s.push("+");
- } else if (f[i].equals("-")) {
- while (("*".equals((s.size() > 0) ? s.lastElement() : ""))
- || ("/").equals((s.size() > 0) ? s.lastElement() : "")
- || ("+").equals((s.size() > 0) ? s.lastElement() : "")) {
- n.push(s.pop());
- }
- s.push("-");
- } else if (f[i].equals(")") || f[i].equals("]") || f[i].equals("}")) {
- while (!"(".equals((s.size() > 0) ? s.lastElement() : "")) {
- n.push(s.pop());
- }
- s.pop();
- } else {
- n.push(f[i]);
- }
- }
- while (s.size() > 0)
- n.push(s.pop());
- return n.toArray();
- }
- /**
- * 计算
- *
- * @param f
- * @return
- */
- public static double jisuan(Object[] f) {
- Stack<Object> s = new Stack<Object>();
- for (int i = 0; i < f.length; i++) {
- if (f[i] instanceof Double) {
- s.push(f[i]);
- } else if ("+".equals(f[i])) {
- double left = (double) s.pop();
- double right = (double) s.pop();
- s.push(jia(right, left));
- } else if ("-".equals(f[i])) {
- double left = (double) s.pop();
- double right = (double) s.pop();
- s.push(jian(right, left));
- } else if ("*".equals(f[i])) {
- double left = (double) s.pop();
- double right = (double) s.pop();
- s.push(cheng(right, left));
- } else if ("/".equals(f[i])) {
- double left = (double) s.pop();
- double right = (double) s.pop();
- s.push(chu(right, left));
- } else {
- }
- }
- return (double) s.pop();
- }
- public static double jia(double a, double b) {
- return a + b;
- }
- public static double jian(double a, double b) {
- return a - b;
- }
- public static double cheng(double a, double b) {
- return a * b;
- }
- public static double chu(double a, double b) {
- return a / b;
- }
- }
springmvc + mybatis整合详细,及遇到的问题请参看以下资料:
参考资料:
http://www.springmvc,net/detail/6074493.html
http://my.spring.net/wangbiglei/blog/489583
http://my.springmvc.net/wangbiglei/blog/489604
时间: 2024-10-21 19:35:29