java也可以执行eval()这样的方法
ScriptEngineManager(字符串或者脚本执行器)
该方式是jdk1.8新增的,在javax扩展包下。
/**
* 编程实现简单字符串功能 要求:给定字符串’My average score is (93+95+96+97+86.5)/5.’
* 实现输出字符串中空格的个数,输出计算表达式的成绩(用eval),格式保留两位小数。 输出格式为: 空格数:XX My average score is
* XX.
*
* @throws ScriptException
*/
public void questionThree() throws ScriptException {
String str = "My average score is (93+95+96+97+86.5)/5.";
char[] charArray = str.toCharArray();
int times = 0;
for (int i = 0; i < charArray.length; i++) {
if (charArray[i] == 32) {
times++;
}
}
System.out.printf("空格数:%d\n", times);
String substring = str.substring(str.indexOf("("), str.lastIndexOf("."));
ScriptEngineManager manager = new ScriptEngineManager(); //创建一个ScriptEngineManager对象
ScriptEngine engineByName = manager.getEngineByName("js");//通过ScriptEngineManager获得ScriptEngine对象
System.out.printf("My average score is %.2f\n", (double) engineByName.eval(substring));//执行获得结果
}
结果