js和java将字符串转成算术表达式


====>java

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public static void test1() throws ScriptException {
  String str = "(a >= 0 && a <= 5)";
  ScriptEngineManager manager = new ScriptEngineManager();
  ScriptEngine engine = manager.getEngineByName("js");
  engine.put("a", 6);
  Object result = engine.eval(str);
  System.out.println("结果类型:" + result.getClass().getName() + ",计算结果:" + result);
}
public static void test2() throws ScriptException {
  String str = "43*(2 + 1.4)+2*32/(3-2.1)";
  ScriptEngineManager manager = new ScriptEngineManager();
  ScriptEngine engine = manager.getEngineByName("js");
  Object result = engine.eval(str);
  System.out.println("结果类型:" + result.getClass().getName() + ",计算结果:" + result);
}


public static void main(String[] args) {
  try {
    test1();
    test2();
  } catch (ScriptException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
}

 

jdk1.6中可以直接这样用

 

=========>js

<input type= "text"  id= "text1"  value= "4"  />
<input type= "text"  id= "text2"  value= "9"  />
<input type= "text"  id= "text3"  value= "5"  />
<input type= "text"  id= "text4"  value= "6"  />
<input type= "text"  id= "text5"  value= "2"  />
<input type= "button"  value= "计算"  onclick= "func();"  />
<script type= "text/javascript" >
function  func() {
     var  str =  "(A+B+C)*D/E" ;
     var  A = parseFloat(document.getElementById( "text1" ).value);
     var  B = parseFloat(document.getElementById( "text2" ).value);
     var  C = parseFloat(document.getElementById( "text3" ).value);
     var  D = parseFloat(document.getElementById( "text4" ).value);
     var  E = parseFloat(document.getElementById( "text5" ).value);
     var  num = eval(str);
     alert(num);   
}
</script>

 例如:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM