Java toString中点后的两位数字

Java toString中点后的两位数字,java,decimal,digits,Java,Decimal,Digits,我设法使这两个类,但“分数”必须有7位数字后的点。我不能修改主类。我想我应该使用String.format(“%.7f”,…),但我不知道在哪里。请帮忙 MAIN: public class Main { public static void main(String[] args) { Calc c = new Calc(); String score = c.doCalc(args[0]); System.out.println(scor

我设法使这两个类,但“分数”必须有7位数字后的点。我不能修改主类。我想我应该使用String.format(“%.7f”,…),但我不知道在哪里。请帮忙

MAIN:

public class Main {
    public static void main(String[] args) {
        Calc c = new Calc();
        String score = c.doCalc(args[0]);
        System.out.println(score);
    }
}
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";
        }
    }
}
计算:

public class Main {
    public static void main(String[] args) {
        Calc c = new Calc();
        String score = c.doCalc(args[0]);
        System.out.println(score);
    }
}
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";
        }
    }
}

不要使用
system.out.println
,而应该使用
system.out.format
system.out.printf
。请参阅Oracle关于如何使用它的简短教程。为什么不能修改主类?这似乎是打印分数的地方。

您可以将字符串结果解析回
Double
,并将其馈送到
string。格式

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));

但只有当eval结果是有效的浮点数时,这才有效。要处理整数或非数字等其他情况,您必须进行一些类型检查,使代码看起来更混乱。

我知道我应该编辑Main,但我不能,因为这是我的研究任务。我只能修改计算:/