0

あいまいなタイトルで申し訳ありませんが、それを何と呼ぶべきかさえわかりません。先に進んで、何が起こっているのかを説明します.

URL を作成するために Stringbuffer を使用しています。次のようになります。

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

sensor=falseの直前の文字シーケンス0]&4]&に重点が置かれています

IF の前にゼロを削除する、テストが緑色になります。

作成された文字列は次のようになります。

latlng=49.0516736,8.3889184&sensor=false

ということで・・・予想通り。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()
4

1 に答える 1

4

doubleへの変換時にフォーマット/パディングの問題がありますString

あなたがしていることは、おそらく最終的にDouble#toString()を呼び出すStringBuilder#append(double)を使用していることです。

doubleこれらのメソッドの javadoc を参照して、値が に変換される方法を確認してStringください。または、コードを制御したい場合は、NumberFormatまたはそのサブクラスを使用します。

于 2012-06-04T21:39:07.140 に答える