本サイトはプロモーション(広告)が含まれています。

【Java】numberformatexceptionの例外処理と対処について

【Java】numberformatexceptionの例外処理と対処について

 NumberFormatExceptionは文字列を数値型に変換しようとしたときに文字列が数値型に適した状態でない場合に発生します。

例えば、次のような文ではNumberFormatExceptionとなります。

String str = "test";
int i = Integer.parseInt(str);
System.out.println(i);

//実行結果
Exception in thread "main" java.lang.NumberFormatException: For input string: "test"

 例外処理についてはtry-catch文で以下のように例外処理をしてあげればよいです。

public static void main(String[] args) {
    try {
        String str = "test";
        int i = Integer.parseInt(str);
        System.out.println(i);
    } catch (NumberFormatException e) {
        System.out.println("例外");
    }
}

// 実行結果
例外

 文字列を数値に変換しようとする際に、英字等の変数を入れることはないです。

 NumberFormatExceptionは「,(カンマ)」や「.小数点」を利用する際にエラーを起こしたりします。

 予め対策してあげれば問題なく数値変換できます。

,(カンマ)」の対策にはreplaceAllで置換してあげればよい

 「,(カンマ)」を含む文字列は数値に変換できません。

public static void main(String[] args) {
    String str = "3,000";
    int i = Integer.parseInt(str);
    System.out.println(i);
}

// 実行結果
Exception in thread "main" java.lang.NumberFormatException: For input string: "3,000"

 上記の実行結果から「,(カンマ)」は文字列として認識しないことを確認できます。

 その場合は、「,(カンマ)」を置換してあげれば良いです。

public static void main(String[] args) {
    String str = "3,000";
    str = str.replaceAll(",","");
    int i = Integer.parseInt(str);
    System.out.println(i);
}

// 実行結果
3000

小数点を扱う際はdouble型など使用する

 小数点を含む場合はint型に変換できません。

public static void main(String[] args) {
    String str = "3.14";
    int i = Integer.parseInt(str);
    System.out.println(i);
}

// 実行結果
Exception in thread "main" java.lang.NumberFormatException: For input string: "3.14"

上記の場合はdouble型など小数点を使用できる型で数値変換すれば良いです。

public static void main(String[] args) {
    String str = "3.14";
    double i = Double.parseDouble(str);
    System.out.println(i);
}

// 実行結果
3.14
 

Javaの記事一覧へ

PAGE TOP