String s="5×(5+9)/7"; String sql="select "+s+" v from dual"; 数据库处理 灵活String s="5×(5+9)/7"; int s1 = Integer.parseInt(s.substring(0,1)); int s4 = Integer.parseInt(s.substring(3,4)); int s6 = Integer.parseInt(s.substring(5,6)); int s9 = Integer.parseInt(s.substring(8,9)); System.out.println (s1*(s4+s6)/s9); java处理 太死板 当然我个人感觉正则表达式实现最好
String str = "5*(5+9)/7"; int val = 0; String a = str.substring(str.indexOf("(") + 1, str.indexOf(")")); String[] b = a.split("\\+", -1); val = Integer.valueOf(b[0]) + Integer.valueOf(b[1]); String c = str.split("\\*",-1)[0]; val *= Integer.valueOf(c); String d = str.split("/",-1) [1]; val /= Integer.valueOf(d); System.out.println(val); System.out.println(5*(5+9)/7);编译原理
String s="5×(5+9)/7"; String sql="select "+s+" v from dual"; 数据库处理 灵活这样可以?????
这个方法不好吗?String s="5×(5+9)/7"; String sql="select "+s+" v from dual"; 这个 方法不好吗 ?把字符串的×replice成*叫数据库运算 返回结果
String s="5×(5+9)/7"; String sql="select "+s+" v from dual"; s是你传进去的字符串你编写个sql 连接数据库 查询这条sql语句接受查询的结果查询结果就是运算的结果 不明白吗?我用的oracle数据库
String sql="select "+s+" v from dual";
数据库处理 灵活String s="5×(5+9)/7";
int s1 = Integer.parseInt(s.substring(0,1));
int s4 = Integer.parseInt(s.substring(3,4));
int s6 = Integer.parseInt(s.substring(5,6));
int s9 = Integer.parseInt(s.substring(8,9));
System.out.println (s1*(s4+s6)/s9);
java处理 太死板
当然我个人感觉正则表达式实现最好
String str = "5*(5+9)/7";
int val = 0;
String a = str.substring(str.indexOf("(") + 1, str.indexOf(")"));
String[] b = a.split("\\+", -1);
val = Integer.valueOf(b[0]) + Integer.valueOf(b[1]);
String c = str.split("\\*",-1)[0];
val *= Integer.valueOf(c);
String d = str.split("/",-1) [1];
val /= Integer.valueOf(d);
System.out.println(val);
System.out.println(5*(5+9)/7);编译原理
String sql="select "+s+" v from dual";
数据库处理 灵活这样可以?????
String sql="select "+s+" v from dual";
这个 方法不好吗 ?把字符串的×replice成*叫数据库运算 返回结果
String s="5×(5+9)/7";
String sql="select "+s+" v from dual";
s是你传进去的字符串你编写个sql 连接数据库 查询这条sql语句接受查询的结果查询结果就是运算的结果 不明白吗?我用的oracle数据库
你到数据库跑下这条语句看看
1,需要连接数据库
2,和数据库的语法相关,不够灵活最基本的办法就是做词法分析还有个思路,在JAVA中调用JS引擎,使用JS的eval()函数来做,也许可行
Server2000不可以 执行!
这个表“dual” 是怎么回事!
中序 转 后序 然后 解析后序。
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
engine.eval("print(eval('5*(5+9)/7'))");很水。
不过LZ如果知道动态代理的话,可以用java的编译compiler类做,这个就是麻烦,能把字符串动态编译java