Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-如何使用Java printf打印空日期_Java - Fatal编程技术网

Java-如何使用Java printf打印空日期

Java-如何使用Java printf打印空日期,java,Java,我正在使用PrintWriter.printf函数使用以下格式写入java文件: %1$s、%2$s、%3$s、%4$s、%5$tF、%n 这给了我如下输出: 25563,XY63563,Greame,Thomas,1942-04-07, 341411,YY2524522,Thayer,Michael,1945-03-19, 472452,TR254252,Brook,null,null, 有没有办法自定义printf以获得空值的空格 我可以对字符串值执行null检查,并用空格替换null

我正在使用PrintWriter.printf函数使用以下格式写入java文件:

%1$s、%2$s、%3$s、%4$s、%5$tF、%n

这给了我如下输出:

25563,XY63563,Greame,Thomas,1942-04-07,

341411,YY2524522,Thayer,Michael,1945-03-19,

472452,TR254252,Brook,null,null,
有没有办法自定义printf以获得空值的空格


我可以对字符串值执行null检查,并用空格替换null。如何处理printf中的空日期值。

我认为您必须分两步执行此操作:

String formattedDate = (date == null) ? "" : String.format("%tF", date);
然后再次使用printf和如下格式字符串

"%1$s,%2$s,%3$s,%4$s,%5$s,%n" 

和formattedDate作为第五个参数,该参数现在的格式为%s。我看不到一种方法可以让格式字符串以自定义方式处理空值。

因此无法通过printf函数自定义空值处理。执行单个空检查太冗长。我想使用printf在一条语句中处理多种数据类型。在printf之外处理空值需要将每个数据值转换为字符串类型,然后再打印。@pawindergupta我认为这是对的,printf和string.format并没有给您提供一种方法。但是做一些像printf%1$s、%2$s、%3$s、%4$s、%5$s、%n、fmta、fmtb、fmtc之类的事情。。。对我来说似乎不太繁重,您可以为不同的类型编写一个重载的fmt方法,它可以为null做任何特殊的事情。或者,如果你真的很聪明,你可以为printf编写一个包装器,检查它的对象参数是否为null,对它们做一些特殊的处理,并使用printf来处理其余的。但这需要自己解析格式字符串。