解決済みの編集: 私は愚かです。あるケースでは、入力文字列が思ったよりも長かった (破損していた) ため、米国のデータの一部がヨーロッパのテストに送られ、2 つの double が "." で連結されたときに例外が発生しました。小数点以下 3 桁の文字列を作成します。7 を 8 に変更し、元のコードは問題ありません。
この問題に時間を費やしてくれたすべての人に申し訳ありません。
最後にすべてのコードを追加するように編集
たとえば 12,345 などのヨーロッパの 10 進数値が保存されている csv ファイルがあります。データを解析して文字列にすると、コードで例外がスローされます。1行に絞りました
ここに変数があります
String[] mark = line.split(",");
double wLat = 0;
この行は機能しません
wLat = Double.parseDouble(mark[3] + "." + mark[4]);
この行(ヨーロッパ以外のデータの場合)は機能します
wLat = Double.parseDouble(mark[3]);
私はおそらく愚かなことをしていますが、これはGoogleにとって難しく、saを検索しても役に立ちませんでした. 文字列ビルダーと追加を試みましたが、parseDouble は文字列ビルダーでは機能しませんでした。これについて助けていただければ幸いです。
アレン
編集:
// Read old marks
try {
// read all the old mark settings so we end up with the last ones
// this will restore settings on a restart
BufferedReader br;
br = new BufferedReader(new FileReader(baseDir + "/StartLine/Waypoint_log.csv"));
String line = null;
while ((line = br.readLine()) != null) {
String[] mark = line.split(",");
double wLat = 0;
double wLong = 0;
if (mark.length > 7){ // europe
//wLat = Double.parseDouble(mark[3] + "." + mark[4]);
//wLong = Double.parseDouble(mark[5] + "." + mark[6]);
}
else{ // normal case
wLat = Double.parseDouble(mark[3]);
wLong = Double.parseDouble(mark[4]);
}
int index = Integer.valueOf(mark[0]);
if (wLat >= -90 && wLat <= 90 && wLong >= -180 && wLong <= 180){
StartLine2.waypointNameArray[index] = mark[1];
StartLine2.waypointLat[index] = wLat;
StartLine2.waypointLong[index] = wLong;
StartLine2.waypointSet[index]=1;
index++;
}
}
br.close();
}
catch (Exception e) {
Toast toast=Toast.makeText(this, "No Marks Set",Toast.LENGTH_SHORT);
toast.show();
}