Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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 在PrintWriter中使用printf()的字符串的可变宽度_Java - Fatal编程技术网

Java 在PrintWriter中使用printf()的字符串的可变宽度

Java 在PrintWriter中使用printf()的字符串的可变宽度,java,Java,我试图在我的输出中实现均匀的缩进。因此,即使字符串长度不同,字符串之间的宽度也将继续匹配。我的意思是,如果我想打印一个包含人的名字、年龄和体重的文本文件,但我希望缩进保持均匀 Ryan 1 1 Alexander 25 180 Ashish P. 51 217 Ben 19 130 我知道固定宽度不起作用,因为名称可以很长也可以很短 writer.printf("%s%10d%10d", name, age,

我试图在我的输出中实现均匀的缩进。因此,即使字符串长度不同,字符串之间的宽度也将继续匹配。我的意思是,如果我想打印一个包含人的名字、年龄和体重的文本文件,但我希望缩进保持均匀

Ryan       1          1
Alexander 25        180
Ashish P. 51        217
Ben       19        130
我知道固定宽度不起作用,因为名称可以很长也可以很短

writer.printf("%s%10d%10d", name, age, weight);

我使用PrintWriter.printf()进行此操作,尽管我认为它也适用于System.out.printf()和.format()。

您可以尝试使用制表器来分隔每个字段(\t char)


但如果最短名称和最长名称的长度之差大于制表器的大小,则这可能不起作用。在这种情况下,您运气不好,您必须自己实现逻辑。

是的,这是我尝试的第一个方法之一,但由于长度不同,尤其是名称,而且制表符是以倍数4完成的,因此宽度并没有按照我的要求整齐划分。您可以迭代名称并找到最长的名称。然后计算字段位置长度并再次迭代。打印空格数减去字段长度和字段本身。
writer.printf("%s\t%d\t%d", name, age, weight);