以下のように表示されます。
- (例外表示)
- Exception in thread "xxx" java.lang.NumberFormatException: For input string: "xxx"
原因
- 数値に変換しようとした値が、数値に変換できない値であったため。
(OKな文字列の例)
"123"、"-123"、"1.23"、"-1.23"、"0"、"000"、"1.23d"、"1.23f"
(NGな文字列の例)
"abc"、""、null、""、"1.23x"
小数値はInteger.parseIntだとエラーになります。
Double.parseDoubleやFloat.parseFloatをご使用ください。
数値の最後に付く英字は数値リテラルの場合のみOKです。
⇒ [Java] 数値リテラルで型を明示的に指定する
対処方法
- 数値に変換しようとした値が、適切な値であるか確認する
発生例
以下のようなパターンでエラーが発生します。
例)文字列"abc"をint型に変換する
1 2 3 4 5 6 7 |
public class Sample { public static void main(String[] args) { String a = "abc"; int i = Integer.parseInt(a); System.out.println(i); } } |
- コマンドプロンプト
- C:\>java Sample Exception in thread "main" java.lang.NumberFormatException: For input string: "abc" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) at Sample.main(Sample.java:4)
"abc"は数値に変換できない値なのでエラーが発生します。
備考
- 数値に変換できる文字列かどうかを判定するには、以下記事をご覧ください。
⇒ [Java共通部品] 数値チェック