为了账号安全,请及时绑定邮箱和手机立即绑定

Java在数字末尾添加“ 0”

Java在数字末尾添加“ 0”

料青山看我应如是 2021-05-10 12:13:56
所以我的问题是我必须计算10 ^ n使得n〜10 ^ 5。显然,它不适合任何数据类型,因此我决定改用字符串。最后,我确实在初学者的书https://beginnersbook.com/2014/07/java-right-padding-a-string-with-spaces-and-zeros/中找到了解决方案 。我不想要BigInteger乘以10 n次的解决方案。public class PadRightExample2 {    public static void main(String[] argv) {        System.out.println("#" + rightPadZeros("mystring", 10) + "@");        System.out.println("#" + rightPadZeros("mystring", 15) + "@");        System.out.println("#" + rightPadZeros("mystring", 20) + "@");    }    public static String rightPadZeros(String str, int num) {        return String.format("%1$-" + num + "s", str).replace(' ', '0');    }}输出:#mystring00@#mystring0000000@#mystring000000000000@谁能解释什么是%1$-什么s?
查看完整描述

2 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

  • % 代表String的格式

  • 1$装置第一附加参数argsString.format(String format, Object... args)2$将是第二个,等等。

  • -简而言之,是左对齐,与数字一起声明最终输出的长度。java.util.Formatter的文档解释得更好:

    左对齐输出。空格('\ u0020')将根据需要在转换值的末尾添加,以填充字段的最小宽度。

  • s 代表String参数类型

典型的示例是日志记录,其中您解析的参数%s实际上是相同的。使用美元字符和数字来%1$s指定参数数字,-10并使最终输出长度为10。

#mystring00@            // mystring00 has length 10

#mystring0000000@       // mystring0000000 has length 15

#mystring000000000000@  // #mystring000000000000 has length 20

大部分信息可在java.util.Formatter文档中找到,该文档在中使用String::format。


您发现的代码片段可能有点令人困惑,因为即使没有1$参数传递,它也可以正常工作。


请尝试以下操作:String.format("%2$-" + num + "s", str, "test").replace(' ', '0');。结果将是


#test000000@

#test00000000000@

#test0000000000000000@

而String.format("%1$-" + num + "s", str, "test").replace(' ', '0');从您的摘要中得出原始结果。注意1$和的2$区别。


查看完整回答
反对 回复 2021-05-26
  • 2 回答
  • 0 关注
  • 302 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信