- - PR -
CSVデータ取込時のNumberFormatExceptionについて
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-07-15 08:09
CSVデータ(String)を取り込んで、""と,を外し、double型に変換して加算を行う処理を作成しているのですが、次のエラーに遭遇してしまいました。
NumberFormatException for input string:"1.000" java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1036) java.lang.Double.valueOf(Double.java:168) 型変換/加算は次のように行なっております。 double dNum[n] += Double.valueOf( str.replaceAll("\"","").trim()).doubleValue(); CSVデータには、小数点以下3桁まで持っているものもあり、その小数点以下の数値も省略せずに計算できるようにしなければならないのですが…。 どうかお知恵を借して下さい。 | ||||||||
|
投稿日時: 2005-07-15 08:47
よくわかりませんが、文字列に引用符が付いていると言うこ
とはありませんか? | ||||||||
|
投稿日時: 2005-07-15 08:54
↑の記述だけではダブルコーテーションしか消えませんが…。 カンマが残っていてエラーになっているだけは無いですか? | ||||||||
|
投稿日時: 2005-07-15 10:21
解決法ではないのですが・・・ parseDoubleを使うともっとスッキリ書けます Double.parseDouble( str.replaceAll("\"","").trim()) | ||||||||
|
投稿日時: 2005-07-15 10:29
レスありがとうございます。
Kissingerさん>引用符はついていないです。 MARUさん>すみません、カンマは前の方の処理で外しています。 ひらさん>うおっ、ありがとうございます。 | ||||||||
|
投稿日時: 2005-07-15 10:47
NumberFormatException for input string:"1.000"
トレース情報の中の1.000が引用符でかこわれているのが 気になりますね。 | ||||||||
|
投稿日時: 2005-07-15 10:50
問題が曖昧なのでこれ以上は答えられないと思います。
・変換出来ないと分かっている文字列の条件はなんですか? 「小数点以下3桁まで持っているものもあり」の件から、その辺が問題なのでしょうが。。 ・問題が発生しているJavaの環境は? ちなみに JDK1.4.1で確認したところ"1.000"は問題なくdoubleに変換できました。 | ||||||||
|
投稿日時: 2005-07-15 11:56
そのコードで問題なさそうに見えますね。replaceAll("\"", "") でちゃんと引用符は消えますし、NumberFormatExceptionのメッセージは入力文字列を""で囲って表示するようです。
まずは、Double.valueOf() の入力になっている文字列の中身をcharAt()で眺めてみるとか。 |