gpt4 book ai didi

JAVA - 计算器没有 if's 或 catch - ScriptEngineManager

转载 作者:行者123 更新时间:2023-11-30 10:51:35 26 4
gpt4 key购买 nike

作为我的学校工作,我必须编写一个没有任何条件操作数的计算器(通过命令行传递参数),例如 If、catch 或 for、while 等。

我想使用 JavaScript 进行计算,但我的问题是我得到了 java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String。

请帮助我更正我的代码。

import java.math.BigDecimal;
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;

public class Calc {

public String doCalc(String string) {

String[] argsList = {};
BigDecimal a = null, b = null;
String operand = null;

try {
argsList = string.split("\\s+");
a = new BigDecimal(argsList[0]);
operand = argsList[1];
b = new BigDecimal(argsList[2]);

//JavaScript arithmetics
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
//JavaScript arithmetics

return (String) engine.eval(a+ " " + operand + " " + b);
} catch (Exception e) {
//e.printStackTrace();
System.out.println("wrong args");
}
return "";
}
}

最佳答案

一个简单的 toString(); 附加到返回行似乎可以解决问题。

该行变为:

return engine.eval(a+ " " + operand + " " + b).toString();

根据docs eval() 方法返回一个(未指定的)对象,其中 toString() 方法似乎正确地转换了结果。

关于JAVA - 计算器没有 if's 或 catch - ScriptEngineManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34660380/

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