猿问

Java在数字末尾添加“ 0”

所以我的问题是我必须计算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?



料青山看我应如是
浏览 339回答 2
2回答

RISEBY

% 代表String的格式1$装置第一附加参数args的String.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$区别。
随时随地看视频慕课网APP

相关分类

Java
我要回答