个性化阅读
专注于IT技术分析

Java中的NumberFormatException

本文概述

当我们尝试将字符串转换为数字值(例如float或integer)时, 将引发NumberFormatException, 但是输入字符串的格式不正确或不合法。非法格式表示, 如果你尝试将字符串解析为整数, 但字符串包含布尔值, 则它是非法格式。例如-如果我们尝试将字符串解析为整数, 但字符串为null。

这是一个未经检查的异常。它是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
		}
            }
}

赞(0)
未经允许不得转载:srcmini » Java中的NumberFormatException

评论 抢沙发

评论前必须登录!