【问题标题】:Variable width of strings using printf() in PrintWriter在 PrintWriter 中使用 printf() 可变宽度的字符串
【发布时间】:2014-02-11 12:20:43
【问题描述】:

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

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()。

【问题讨论】:

    标签: java


    【解决方案1】:

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

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

    但这可能效果不佳,如果最短和最长名称的长度之间的差异大于制表符大小。在这种情况下,你运气不好,你必须自己实现逻辑。

    【讨论】:

    • 是的,这是我尝试的第一个方法之一,但由于长度不同,尤其是名称的长度不同,而且制表符以 4 倍数完成,宽度并没有像我一样整齐地划分想要。
    • 您可以遍历名称并找到最长的名称。然后计算字段位置长度并再次迭代。打印空格数减去字段长度和字段本身。
    猜你喜欢
    • 2011-02-12
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    相关资源
    最近更新 更多