「JavaのNumberFormatExceptionを徹底解説!エラー原因と対処法」
はじめに
Javaでプログラミングをしていると、数値変換の際に「NumberFormatException」に遭遇することがあります。
この記事では、NumberFormatExceptionが発生する具体的な事例とその解決方法を、実際のコード例とともに解説します。
エラーの理解と対処法を身につけることで、より効率的なJavaプログラミングが可能になります。
NumberFormatExceptionとは
NumberFormatExceptionは、不適切な文字列を数値に変換しようとした際に発生するランタイムエラーです。
例えば、数値ではない文字列を整数に変換しようとすると、この例外がスローされます。
Javaのエラー一覧をCHECK!
-
【Java】よく発生するエラー一覧12選 エラーの発生事例と対処方法をみてみよう!
Javaのエラーとその対処方法 この記事では、Javaでよく発生するエラーと各エラーが起きる事例と、その対処方法を紹介していきます。 下記のエラーについてみていきます! エラーリスト NullPoin ...
続きを見る
事例1: 数値以外の文字列を整数に変換
ソースコード例
1 2 3 4 5 6 |
public class Program { public static void main(String[] args) { String str = "abc"; int number = Integer.parseInt(str); } } |
このコードでは、「abc」という数値ではない文字列を整数に変換しようとしています。
その結果、NumberFormatExceptionが発生します。
出力結果
Exception in thread "main" java.lang.NumberFormatException: For input string: "abc"
KindleUnlimited会員であれば、全ての本をご覧頂けます。 StreamAPIを理解すれば、Javaの世界が変わる 第1版
修正方法1: 数値以外の文字列を整数に変換
修正後のソースコード例
1 2 3 4 5 6 7 8 9 10 11 |
public class Program { public static void main(String[] args) { try { String str = "123"; int number = Integer.parseInt(str); System.out.println("変換された数値: " + number); } catch (NumberFormatException e) { System.out.println("NumberFormatExceptionが発生しました: " + e.getMessage()); } } } |
出力結果
変換された数値: 123
事例2: 空の文字列を数値に変換
ソースコード例
1 2 3 4 5 6 |
public class Program { public static void main(String[] args) { String str = ""; int number = Integer.parseInt(str); } } |
このコードでは、空の文字列を整数に変換しようとしています。
結果として、NumberFormatExceptionが発生します。
出力結果
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
修正方法2: 空の文字列を数値に変換
修正後のソースコード例
1 2 3 4 5 6 7 8 9 10 11 |
public class Program { public static void main(String[] args) { try { String str = "10"; int number = Integer.parseInt(str); System.out.println("変換された数値: " + number); } catch (NumberFormatException e) { System.out.println("NumberFormatExceptionが発生しました: " + e.getMessage()); } } } |
出力結果
変換された数値: 10
事例3: 数値形式ではない文字列を浮動小数点数に変換
ソースコード例
1 2 3 4 5 6 |
public class Program { public static void main(String[] args) { String str = "123.abc"; double number = Double.parseDouble(str); } } |
このコードでは、数値形式ではない文字列「123.abc」を浮動小数点数に変換しようとしています。
この場合も、NumberFormatExceptionが発生します。
出力結果
Exception in thread "main" java.lang.NumberFormatException: For input string: "123.abc"
修正方法3: 数値形式ではない文字列を浮動小数点数に変換
修正後のソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 |
public class Program { public static void main(String[] args) { try { String str = "123.45"; double number = Double.parseDouble(str); System.out.println("変換された数値: " + number); } catch (NumberFormatException e) { System.out.println("NumberFormatExceptionが 発生しました: " + e.getMessage()); } } } |
出力結果
変換された数値: 123.45
事例4: 数値範囲を超える整数の変換
ソースコード例
1 2 3 4 5 6 |
public class Program { public static void main(String[] args) { String str = "2147483648"; // Integerの最大値を超える値 int number = Integer.parseInt(str); } } |
このコードでは、Integerの最大値(2,147,483,647)を超える値を整数に変換しようとしています。
これにより、NumberFormatExceptionが発生します。
出力結果
Exception in thread "main" java.lang.NumberFormatException: For input string: "2147483648"
修正方法4: 数値範囲を超える整数の変換
修正後のソースコード例
1 2 3 4 5 6 7 8 9 10 11 |
public class Program { public static void main(String[] args) { try { String str = "2147483647"; // Integerの最大値 int number = Integer.parseInt(str); System.out.println("変換された数値: " + number); } catch (NumberFormatException e) { System.out.println("NumberFormatExceptionが発生しました: " + e.getMessage()); } } } |
出力結果
変換された数値: 2147483647
事例5: 不適切な形式での浮動小数点数の変換
ソースコード例
1 2 3 4 5 6 |
public class Program { public static void main(String[] args) { String str = "3.14e-2x"; // 不適切な指数表記 double number = Double.parseDouble(str); } } |
このコードでは、不適切な形式の指数表記を浮動小数点数に変換しようとしています。
このような場合も、NumberFormatExceptionが発生します。
出力結果
Exception in thread "main" java.lang.NumberFormatException: For input string: "3.14e-2x"
修正方法5: 不適切な形式での浮動小数点数の変換
修正後のソースコード例
1 2 3 4 5 6 7 8 9 10 11 |
public class Program { public static void main(String[] args) { try { String str = "3.14e-2"; // 適切な指数表記 double number = Double.parseDouble(str); System.out.println("変換された数値: " + number); } catch (NumberFormatException e) { System.out.println("NumberFormatExceptionが発生しました: " + e.getMessage()); } } } |
出力結果
変換された数値: 0.0314
まとめ
JavaでのNumberFormatExceptionは、不適切な文字列を数値に変換しようとした際に発生します。
この記事で紹介した5つの事例を理解し、適切な対処法を身につけることで、エラーを防ぐことができます。
エラーの原因を正確に理解し、適切なコードを書くことが重要です。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!
この記事を通じて、JavaでのNumberFormatExceptionの理解が深まり、より効率的でエラーの少ないプログラミングが可能になることを願っています。エラーに直面した際は、この記事を参考にしてみてください。