【问题标题】:Java printf why doesnt it format correctly in my method?Java printf 为什么在我的方法中格式不正确?
【发布时间】:2014-02-23 01:59:55
【问题描述】:

当我调用方法时

public static void print(){
    System.out.printf("%10s", "Test 1 Test 2 Test 3 Average\n");
}

格式不正确(根本不缩进)谁能解释一下原因。

我希望输出是

     Test 1 Test 2 Test 3 Average

^^10 个缩进空格

【问题讨论】:

  • 为什么你认为它应该缩进?也许使用\t 进行缩进?
  • 你想达到什么目的...你能补充一下预期的输出吗?
  • 如果您希望在打印的开头有 10 个空格,只需在打印的开头添加 10 个空格即可:" Test 1 Test 2 Test 3 Average\n"

标签: java methods call printf


【解决方案1】:

您的 printf 参数长度为 29 个字符,但您只允许 10 个字符的偏移量,因此不会产生缩进。因此,您需要一个格式说明符宽度为 10 + 29(完整字符串)

System.out.printf("%39s", "Test 1 Test 2 Test 3 Average\n");

仍然使用单个 Formatter String 更简单(并使用与平台无关的换行符 - %n

System.out.printf("%10sTest 1 Test 2 Test 3 Average%n", " ");

阅读Formatter javadoc了解更多信息

【讨论】:

    【解决方案2】:

    我认为“缩进”是指填充,因为 printf 并不意味着缩进。您提供的代码不会添加任何空格,因为字符串长度超过 10 个字符。此外,%10s 意味着在字符串之后添加空格以匹配 10 个字符的大小(在给定的示例中)。

    如果你想在之前用空格填充字符串,你会写:

    System.out.printf("% 10s", ...)

    在这种情况下,它将用空格填充字符串以匹配 10 个字符。

    【讨论】:

      猜你喜欢
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-10
      • 2013-10-26
      • 2022-11-19
      相关资源
      最近更新 更多