使用printf

时间:2015-05-05 18:18:55

标签: java

我正在格式化变量。我尝试添加0填充,但我收到 运行时问题

当我删除左对齐标志" - "我可以添加填充,但它就像我无法添加两者一样。

以下是代码:

  int i4 = 1000;
  System.out.printf("Format with position and spacing and left justify and locale separator and 0 padding");
  System.out.printf("%1$-,7d \n", i4); //Runs fine
  System.out.printf("%1$-,07d \n", i4); //Run time error

修改

在运行时我得到:IllegalFormatFlagsException

Exception in thread "main" java.util.IllegalFormatFlagsException: Flags = '-0,'

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我不相信这是可能的。这两个概念不能合作。

  • 如果您使用“%07d”填充零,那么您将获得 “001,000”,即7个字符。
  • 左对齐同一个数字001,000,相同格式宽度7无效,答案仍然是“001,000”

如果你想以更大的格式宽度左对齐,你可以分两步完成......

System.out.printf("Result=\"%-12s\"\n", String.format("%,07d", i4));

输出

Result="001,000     "