有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java stringbuffer和“0&”导致截断或转义

很抱歉标题不清楚,但我甚至不知道该怎么称呼它,我会继续解释发生了什么

我正在使用Stringbuffer构建URL。看起来是这样的:

http://maps.googleapis.com/maps/api/geocode/json?latlng=49.0516736,8.38891840&sensor=false

在单元测试中将这个字符串与方法的实际结果进行比较时,我遇到了这种行为

这是我得到的断言错误:

latlng=49.0516736[,8.38891840]&sensor=false> but was:<...on?latlng=49.0516736[,8.3889184]&sensor=false

重点是字符序列0]&4]&就在传感器=false之前

如果我在之前去掉零测试变为绿色

然后创建的字符串如下所示:

latlng=49.0516736,8.3889184&sensor=false

所以。。。正如所料。 这不是问题所在,0本身被截断,测试将失败——我已经证明我的代码正在做它应该做的事情(当我删除0时),但我想知道这里发生了什么

0&必须是某种数组访问或某种转义的指示。我不知道。 有人知道是什么导致了这种行为吗

编辑:

这是我使用的代码

StringBuffer s = new StringBuffer( grailsApplication.config.geocodingurl.toString() )
s.append(coordinates.latitude)
s.append(",")
s.append(coordinates.longitude)
s.append("&sensor=false")
return s.toString()

共 (1) 个答案

  1. # 1 楼答案

    double转换为String时存在格式/填充问题

    您正在做的可能是使用StringBuilder#append(double),它最终调用Double#toString()

    查看这些方法的javadoc,了解double值如何转换为String。 或者,如果想控制代码,可以使用NumberFormat或其子类