今天笔者的Android APP在运行的时候,出现了一个运行时错误,错误信息的摘要如下:

 MissingFormatArgumentException: Format specifier: s
1    java.util.Formatter.getArgument(Formatter.java:1111)
2    java.util.Formatter.doFormat(Formatter.java:1076)
3    java.util.Formatter.format(Formatter.java:1042)
4    java.util.Formatter.format(Formatter.java:1011)
5    java.lang.String.format(String.java:1803)
6    java.lang.String.format(String.java:1777)

翻译过来的意思是:缺少格式化参数,这个参数试图格式化为s。在java程序中,涉及到格式化参数的一般就是System.out.format或者String.format 两个函数,一般前者很少用到,后者却经常使用,用于字符串拼接流程。

顺着日志,我们发现这么一行代码:

String.format("xx_%d_%s",a);

由于字符串:xx_%d_%s 要求两个参数,而只赋值了一个a的参数,因此报:缺少参数的错误。