MENU

NumberFormatExceptionに悩まされました

https://cdn-ak.f.st-hatena.com/images/fotolife/k/kiserukun/20210611/20210611090227.png

NumberFormatExceptionとは

文字列(String型)を数値型(int型)に変換した際に発生します。

docs.oracle.com

今回、解決できた方法

trim()

を使用するとエラーが解消されました。

なぜ発生したか

CSVファイルを読み込み、CSVファイルのデータをString型からint型に変換しようとした際に発生しまた。

以下のようなCSVファイルがあります。

1,だいこん,130
2,にんじん,90

String a = 130; String b = 90; として このような変数を作ると

int sum = Integer.parseInt(a) + Integer.parseInt(b);

結果

java.lang.NumberFormatException: For input string: " 130"
 at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:)

エラー文をよく見ていなかった

初めはtry〜catchで解消しようとしていましたが、他に方法はないか検索に検索をしていました。
しかし、エラー文をよく見ると

For input string: " 130"

と書いてあり、" 130"に半角スペースが空いているのを発見。 その結果

int sum = Integer.parseInt(a.trim()) + Integer.parseInt(b.trim());

こうすると解決することができました。

答えはエラー文の中に潜んでいるものですね・・・ かなり時間食ってしまった・・・泣