我真的找不到使用 javax.script实现自己的脚本语言的好例子...
我需要一些东西才能开始.
注1:我真的不是在谈论的javascript;)
注2:我并不需要的例子,如何利用现有的实现,我想实现一个自己的语言.
谢谢.
以下代码用于计算String中的数据:rani = String rani ="32*0.25"; 并给出正确的输出为8.0
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
public class StringMathEngine {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String rani = "32*0.25";
System.out.println(engine.eval(rani));
}
}
Run Code Online (Sandbox Code Playgroud)
但是在以下代码中使用时失败:
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
public class StringMathEngine {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String[]rani = {"s", "32*0.25", "r", "32*0.75+16", "r", "16", "s", "32"};
for(int n=0;n<rani.length; …Run Code Online (Sandbox Code Playgroud) import android.widget.Toast;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public void bEqual(View v) throws ScriptException {
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String value = inputText.getText().toString();
Toast.makeText(this,value,Toast.LENGTH_LONG).show();
try{
result = (double)engine.eval(value);
Toast.makeText(this,String.format("%f",result),Toast.LENGTH_SHORT).show();
}catch(Exception e){
Toast.makeText(this,"Exception Raised",Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
这其中有什么问题吗?执行此操作时应用程序正在退出。它没有显示任何错误,但应用程序正在关闭
我在Java中使用javax.script,我希望能够检测当前的Javascript实现是否是Rhino.我这样做是因为我需要脚本才能在网页和Rhino上正常工作.
Javascript伪代码:
function writeMessage(message) {
if (implementation is Rhino) {
print(message);
}
else if (script is running in a web browser) {
document.write(message);
}
}
Run Code Online (Sandbox Code Playgroud) 我们可以使用 javax.script 创建原始数组,如字节数组或 int 数组吗?