我设法做了这两个classess,但是“得分”必须在点之后有7位数。我无法修改Main类。我想我应该使用String.format(“%。7f”,...),但我不知道在哪里。请帮忙。
主要
public class Main {
public static void main(String[] args) {
Calc c = new Calc();
String score = c.doCalc(args[0]);
System.out.println(score);
}
}
CALC:
public class Calc {
public String doCalc(String cmd) {
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
try {
return engine.eval(cmd).toString();
}
catch (ScriptException e) {
return "Invalid command to calc";
}
}
}
答案 0 :(得分:0)
您应该使用system.out.println
或system.out.format
,而不是使用system.out.printf
。查看Oracle使用它的简短教程here。为什么你不能修改主类?这似乎是你的分数被打印的地方..
答案 1 :(得分:0)
您可以将字符串结果解析回Double
并将其提供给String.format
:
try {
return String.format("%.7f", Double.valueOf(engine.eval(cmd).toString()));
}
catch (Exception e) {
return "Invalid command to calc";
}
您当然可以将结果直接传送到String.format
,而无需进行toString
和valueOf
往返,就像这样:
return String.format("%.7f", engine.eval(cmd));
但这仅在评估结果为有效浮点数时有效。要处理整数或非数字之类的其他情况,您必须进行一些类型检查,并使代码看起来更混乱。