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