【问题标题】:How to center string output using printf() and variable width?如何使用 printf() 和可变宽度使字符串输出居中?
【发布时间】:2011-02-12 04:36:12
【问题描述】:

我正在使用printf() 在Java 中创建一个输出来创建表头。其中一列需要可变宽度。

基本上应该是这样的:

//two coords
Trial    Column Heading
1        (20,30)(30,20)
//three coords
Trial        Column Heading
1        (20,40)(50,10)(90,30)

我尝试使用:

int spacing = numCoords * 7; //size of column
printf("Trial    %*^s", column, "Column Heading");

但是当我尝试在转换语句中使用*^ 时,我不断收到输出错误。

有人知道正确的格式字符串应该是什么吗?

【问题讨论】:

    标签: java string printf


    【解决方案1】:

    使用Commons Lang library中的StringUtils.center:

    StringUtils.center(column, "Column Heading".length());
    

    【讨论】:

      【解决方案2】:

      Java 不支持“*”格式说明符。而是直接将宽度插入格式字符串:

      int spacing = numCoords * 7; //size of column
      System.out.printf("Trial    %" + spacing + "s", "Column Heading");
      

      【讨论】:

      • 好的,这是有道理的,除了输出没有居中,它会正确对齐,对吗? (列比较多,所以要么居中要么两边间距相等)
      • 确实如此。 ((spacing + "Column Heading") / 2) 我认为会这样做。顺便说一句,如果你找到了你喜欢的答案(这个答案或其他人的答案),你应该接受它来给予积分。
      • 谢谢。作为一个几十年前的 C 程序员,我试图让 * 工作——那里的一些博客说它应该工作。这是一个我无法想出的几乎太明显的解决方法。 =)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 2019-10-07
      • 2014-11-11
      • 2011-12-22
      相关资源
      最近更新 更多