Coding_Gamesメモ_Defibrillators

javaの学習にCoding_Games を知り、学習の記録としてメモ。
To debug:

System.err.println( );

を使うとデバックしやすくなる。(エラー出力は評価に影響しない)

内容

リストの中から現在地に一番近い場所を探す

ルール

現在地の緯度、経度とリストの緯度、経度を計算し、一番近い地名を出力
緯度、経度の小数点が','になっているため、'.'に変換する必要がある

計算式は、英語の説明文のDISTANCE の項目に書かれている

インプット

1行目 現在地の経度
2行目 現在地の緯度
3行目 リストの要素数
4行目から リストの内容
番号;地名;住所;電話番号;経度;緯度

アウトプット

現在地に一番近い地名を出力

使用したクラス

StringBuilder

(int) = StringBuilder.indexOf( x , y )
文字列のy番目からxを探し、前方から数えて何文字目かを出力(見つからなかったら-1 を出力)
yを省略すると最初から探す

(String) = StringBuilder.substring(x,y)
文字列の一部を切り取る。
x,yはint型
xが切り取り開始位置、yは終了位置、yが指定されていなければ最後まで指定したのと同じ。

String

(String) = String.replace(x , y , str )
(int)x 文字目から(int)y 文字目を(String)str で置き換える
x = y の時はinsertと同じ動作になる

Double

(static double) = Double.parseDouble(str)
数字を表す文字列str をdouble に変換する
valueOf との違いはparseDouble は基本のデータ型のdouble を出力し、valueOf はラッパークラスのDouble を出力する

考え方
文字列の緯度、経度をdouble に変換する関数を作っておく

リストを2次元配列に保存し
それぞれの距離を計算して、一番近い場所を探す

Coding_Games:https://www.codingame.com/
StringBuilder (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/lang/StringBuilder.html
String (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html
Double (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Double.html