我一直在尝试下面的代码
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class ScriptCode {
public static void main(String[] args) throws Exception{
String code="";
int y=-1;
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
code="if(a<b){return b;}else{return a;}";
engine.put("a",10);
engine.put("b",100);
y=(int)engine.eval(code);
System.out.println(y);
}
}
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息
Caused by: jdk.nashorn.internal.runtime.ParserException: <eval>:1:8 Invalid return statement
if(a<b){return b;}else{return a;}
Run Code Online (Sandbox Code Playgroud)
我无法解决这个问题。问题是在我的用例中,“code”变量将有一些规则,这些规则将返回一些内容。我知道如何在不返回的情况下执行此操作,但我无法从代码中返回某些值。我该怎么做?
根据这个问题,您需要在最后一行写入要返回的值,无需return关键字。您的示例如下所示(带有帮助变量max)
String code="";
int y=-1;
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
code="if(a<b){" +
"max = b" +
"}else{" +
"max = a" +
"} " +
"max";
engine.put("a",10);
engine.put("b",100);
y=(int)engine.eval(code);
System.out.println(y);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
802 次 |
| 最近记录: |