gpt4 book ai didi

java - ScriptEngine 在 java String 中工作,但在 String[] 中失败

转载 作者:搜寻专家 更新时间:2023-10-31 20:11:31 47 4
gpt4 key购买 nike

以下代码对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));
}
}

但在以下代码中使用时失败:

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; n++){
if(rani[n].equals("s")) {
rani[n]=rani[n].replaceAll("s","C/");
}

else if(rani[n].equals("r")){
rani[n]=rani[n].replaceAll("r","D/");
}
else {
rani[n]=engine.eval(rani[n]);
}

System.out.println(rani[n]);
}
}
}

作为编程新手,我需要帮助来更正此代码。

最佳答案

(最初缺少一个分号。)

问题是 ScriptEngine.eval(...) 返回一个 Object,并且有一个 System.out.println(Object)。但是,将对象分配给 String 会产生适当的错误。

for (int n=0; n < rani.length; n++) {
if (rani[n].equals("s")) {
rani[n] = rani[n].replace("s","C/");
} else if(rani[n].equals("r")) { // ('else' missing)
rani[n] = rani[n].replace("r","D/");
} else {
rani[n] = engine.eval(rani[n]); // Semicolon missing!
try {
rani[n] = String.valueOf(engine.eval(rani[n]));
} catch (ScriptException e) {
e.printStackTrace(System.out);
}
}
System.out.println(rani[n]);
}

或者你可以使用变量:

engine.put("s", "C/");
engine.put("r", "D/");

关于java - ScriptEngine 在 java String 中工作,但在 String[] 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24286663/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com