次のコードは、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]);
}
}
}
プログラミングが初めてなので、このコードを修正するには助けが必要です。