Java中的NumberFormatException

本文概述

  • NumberFormatException的常见原因
  • 如何避免NumberFormatException?
当我们尝试将字符串转换为数字值(例如float或integer)时, 将引发NumberFormatException, 但是输入字符串的格式不正确或不合法。非法格式表示, 如果你尝试将字符串解析为整数, 但字符串包含布尔值, 则它是非法格式。例如-如果我们尝试将字符串解析为整数, 但字符串为null。
【Java中的NumberFormatException】这是一个未经检查的异常。它是IllegalArgumentException的子类, 并实现Serializable接口。
NumberFormatException的构造方法
建设者 描述
NumberFormatException() 这将构造一个NumberFormatException, 而没有指定的详细消息。
NumberFormatException(String s) 这将在字符串s中构造一个带有指定的详细消息的NumberFormatException。
NumberFormatException的示例
public class Example {public static void main(String[] args) {int a = Integer.parseInt(null); //throws Exception as//the input string is of illegal format for parsing as it is null.}}

输出:
Java中的NumberFormatException

文章图片
NumberFormatException的常见原因 由于NumberFormatException是由于引发异常的方法的相应参数的字符串格式不正确而发生的, 因此可以有多种方式。其中一些被提及如下-
  • 提供的输入字符串可能为null-示例-Integer.parseInt(null);
  • 输入字符串可能为空-示例-Integer.parseInt(“”);
  • 输入字符串可能带有尾随空格-示例-Integer.parseInt(“ 123”);
  • 输入字符串可能有一个前导空格-示例-Integer.parseInt(“ 123”);
  • 输入字符串可以是字母数字-示例-Long.parseLong(“ b2”);
  • 输入字符串的输入可能会超出存储已分析字符串的数据类型的范围-示例-Integer.parseInt(“ 135”); 整数的最大可能值为127, 但字符串中的值为135, 超出范围, 因此将引发异常。
  • 输入的字符串和用于解析的方法类型之间可能不匹配。如果你提供“ 1.0”之类的输入字符串, 并尝试将该字符串转换为整数值, 它将引发NumberFormatException异常。范例-Integer.parseInt(“ 1..0”);
如何避免NumberFormatException? 引发NumberFormatException的根本原因是, 输入字符串在解析为数值时格式不正确或不合法。因此, 为避免发生此异常, 必须正确设置提供的输入字符串。
要拥有有效且格式正确的字符串, 首先, 请检查输入字符串是否不为null。然后, 检查是否有不必要的空格, 然后将其全部裁剪掉, 然后进行多次检查, 以验证参数字符串是否与我们用于解析字符串的方法的类型匹配。如果方法是ParseInt(), 请检查字符串是否具有整数值, 并且对于所有其他方法, 同样进行所需的检查。
为了防止Java程序生成NumberFormatException, 始终最好将可能引发此异常的代码行封装在try-catch块中, 如下所示-
public class NumberFormatExceptionExample { private static final String inputString = "123.33"; public static void main(String[] args) {try {int a = Integer.parseInt(inputString); }catch(NumberFormatException ex){System.err.println("Invalid string in argumment"); //request for well-formatted string}}}

    推荐阅读