String.format()错误:java.util.MissingFormatArgumentException
我得到这个错误:String.format()错误:java.util.MissingFormatArgumentException,java,Java,我得到这个错误: Caused by: java.util.MissingFormatArgumentException: Format specifier: & at java.util.Formatter$FormatToken.unknownFormatConversionException(Formatter.java:1399) at java.util.Formatter$FormatToken.checkFlags(Formatter.java:1336) at java.
Caused by: java.util.MissingFormatArgumentException: Format specifier: &
at java.util.Formatter$FormatToken.unknownFormatConversionException(Formatter.java:1399)
at java.util.Formatter$FormatToken.checkFlags(Formatter.java:1336)
at java.util.Formatter.transform(Formatter.java:1442)
at java.util.Formatter.doFormat(Formatter.java:1081)
at java.util.Formatter.format(Formatter.java:1042)
at java.util.Formatter.format(Formatter.java:1011)
at java.lang.String.format(String.java:1554)
at java.lang.String.format(String.java:1528)
在这一行代码中:
query = String.format(GMAP_QUERY, location, location);
变量:
private String location = "12.38484,55.43845";
static final String GMAP_QUERY = "staticmapcenter=%s&zoom=13&size=300x100&maptype=roadmap%20&markers=color:red%7C%s&style=feature:poi|element:labels|visibility:off";
它为什么抛出这个异常?
格式说明符:&
是什么意思?您需要避开不需要的百分比。否则字符串将把它作为参数(缺少)。
要转义单个(未重复)百分比符号,您需要在其后面添加另一个百分比字符,即%%
值得一看的是:
Java从Oracle开始问题在重点部分:
"staticmapcenter=%s&zoom=13&size=300x100&maptype=roadmap%20&markers=color:red%7C%s&style=feature:poi|element:labels|visibility:off"
“staticmapcenter=%s&zoom=13&size=300x100&maptype=roadmap%20&markers=color:red%7C%s&style=feature:poi |元素:标签|可见性:关闭”
URL编码中使用的
%
也被解析为String.format
中的格式化程序。他们需要逃脱。例外情况是,它不理解%20&
的含义。看起来您的URL(%20)&maptype=roadmap%20
中有一个空格,而(%7C)&markers=color:red%7C
只是一个竖条,您已经有了&style=feature:poi |元素:标签|可见性:off
因此,修复这些问题,并使用URLEncoder对需要格式化的字符串进行编码
String fmt = "staticmapcenter=%s&zoom=13&size=300x100&maptype=roadmap&markers=color:red|%s&style=feature:poi|element:labels|visibility:off";
String path = URLEncoder.encode(String.format(fmt, "s1", "s2"));
这使得静态地图中心%3Ds1%26缩放%3D13%26大小%3D300x100%26地图类型%3Droadmap%26标记%3Dcolor%3红色%7Cs2%26样式%3Dfeature%3Apoi%7加速%3标签%7Cvisibility%3关闭
但是,你可能是在找这个
String location = "12.38484,55.43845";
String fmt = "staticmap?center=%s&zoom=13&size=300x100&maptype=roadmap&markers=color:red|%s&style=feature:poi|element:labels|visibility:off";
String path = String.format(fmt, location, location);
System.out.print("http://maps.googleapis.com/maps/api/" + path);
“其中包含2%s。”。。。没有,只有一个<代码>staticmapcenter=%s很抱歉,有输入错误。还有一个在末尾的
&markers=color:red%7C%s
处。我现在编辑了我的帖子。抱歉@cricket_007