toString

时间:2017-04-28 17:54:07

标签: java decimal digits

我设法做了这两个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";
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您应该使用system.out.printlnsystem.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,而无需进行toStringvalueOf往返,就像这样:

return String.format("%.7f", engine.eval(cmd));

但这仅在评估结果为有效浮点数时有效。要处理整数或非数字之类的其他情况,您必须进行一些类型检查,并使代码看起来更混乱。