我有一个将输出记录到文件中的类方法,我想对格式指定进行更多控制。
public class Logger {
private static boolean FIRST_CALL = true;
public static void log(String content) {
try {
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("debug.txt", !FIRST_CALL)));
if(FIRST_CALL) {
FIRST_CALL = false;
}
out.println(content);
out.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
}
}
我不确定该怎么做。将println
更改为printf
会产生很多问题。
例如,我按如下方式调用该方法:
Logger.log("testval=" + testVal);
例如,testVal
将是double
。它会输出1.9547E-5
,但实际上我想用十进制格式。
任何帮助表示赞赏。我是Java的新手。
答案 0 :(得分:0)
看看MessageFormat类。
您可以做类似的事情
Logger.log(MessageFormat.format("testval={0}", testVal));
像printf一样,您可以配置输出格式。有关所有选项,请参见Javadoc。
答案 1 :(得分:0)
您可以使用String.format()
。
在您的示例中:
Logger.log(String.format("testval=%f", testVal));
答案 2 :(得分:0)
好吧,如果要将您的代码改成一倍,我会这样写:
private void log(double )
{
// use try-with-resource - it's better
try(PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("debug.txt", !FIRST_CALL))))
{
if(FIRST_CALL) {
FIRST_CALL = false;
}
out.printf("value = %5.7f\n", d);
out.close();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
并调用此代码:
log(1.9547E-5)