【问题标题】:align output with printf将输出与 printf 对齐
【发布时间】:2018-11-21 12:36:37
【问题描述】:

基本上,我需要让日子与价值观并排排列。 像这样:

Monday  273.44

Tuesday 568.4

代替

Monday
Tuesday
Wednesday     
273.44
568.4
563.6

for (int p=0; p < days.length; p++)
{
    System.out.printf(days[p]);
}

for (int s=0; s < sales.length; s++)
{
    System.out.print( sales[s]);
}

【问题讨论】:

  • 该代码不会产生该输出。请提供正确 Minimal, Complete, and Verifiable example
  • printf 需要一个格式字符串和多个值。你说的完全错误。也许您应该(重新)阅读有关printf 工作原理的 Java 指南。
  • 我假设每天都有销售总额。因此,使用相同的 for 循环在同一行打印“day”及其“sales”。

标签: java printf alignment


【解决方案1】:

%-10s 将使天数正好占用 10 个空格,即使它们更短。

for (int p = 0; p < days.length; p++) {
    System.out.printf("%-10s%s%n", days[p], sales[p]);
}

输出

Monday    273.44
Tuesday   568.4

【讨论】:

  • 打印273.440000,但OP似乎想要273.44
  • @Andreas 将其固定为小数点后 2 位。想知道如何从 568.40 中删除多余的 0
  • 使用%s 将只打印需要的小数(但总是至少一个)
【解决方案2】:

既然你希望你的输出是左对齐的,你应该试试这个

    for(int index = 0; index < days.length; index++)
    {
        System.out.printf("%-9s" + " " + "%.2f%n",days[index], sales[index]);
    }

左对齐输出需要一个减号,后跟一个表示宽度的数字。在这种情况下,我们将使用 9,因为星期三是一周中 7 个可能的日子中字符数最多的日子。%s 是字符串的说明符,%.2f 是小数点后 2 位的浮点说明符, %n 是用于打印新行的说明符。有很多在线资源向您展示了如何使用 printf 方法在 java 中打印格式化输出,我建议您这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 2019-03-30
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    相关资源
    最近更新 更多