当尝试将格式不正确的字符串转换为数值时,会发生NumberFormatException 。这意味着,当无法将字符串转换为任何数字类型(float、int 等)时,将引发此异常。它是Java中的运行时异常(Unchecked Exception)。它是IllegalArgumentException 类的a 子类。要处理此异常,可以使用 try - catch 块。
在对字符串进行操作时,有时我们需要将字符串表示的数字转换为整数类型。 Java中一般用于将String转换为Integer的方法是parseInt()。
的用法parseInt()方法:众所周知,该方法有两种变体,如下所示,以便更好地理解
public static int parseInt(String s) throws NumberFormatException This function parses the string argument as a signed decimal integer.
public static int parseInt(String s, int radix) throws NumberFormatException This function parses the string argument as a signed integer in the radix specified by the second argument.
返回类型:
简而言之,这两种方法都将字符串转换为其等效的整数。唯一的区别是参数基数。第一种方法可以视为与第二种方法等效,基数 = 10(十进制)。
构造函数:
- 公共NumberFormatException():构造一个没有详细消息的NumberFormatException。
- 公共 NumberFormatException(字符串消息):使用详细消息‘msg’构造NumberFormatException
NumberFormatException 的常见原因:
存在与数值转换的字符串格式不正确相关的各种问题。其中一些是:
1、输入字符串为空
Integer.parseInt("null") ;
2、输入字符串为空
Float.parseFloat(“”) ;
3. 带有前导和/或尾随空格的输入字符串
Integer abc=new Integer(“ 432 “);
4. 输入带有额外符号的字符串
Float.parseFloat(4,236);
5. 包含非数字数据的输入字符串
Double.parseDouble(“ThirtyFour”);
6. 输入字符串为字母数字
Integer.valueOf(“31.two”);
7. 输入字符串可能超出存储解析字符串的数据类型范围
Integer.parseInt(“1326589741236”);
8. 输入字符串值与用于解析的方法类型之间的数据类型不匹配
Integer.parseInt("13.26");
例子:
Java
// Java Program to illustrate NumberFormatException
// Importing Scanner class to take
// input number from the user
import java.util.Scanner;
// Class
public class GFG {
// Main driver method
public static void main(String[] arg)
{
// Declaring an variable which
// holds the input number entered
int number;
// Creating a Scanner class object to
// take input from keyboard
// System.in -> Keyboard
Scanner sc = new Scanner(System.in);
// Condition check
// If condition holds true, Continue loop until
// valid integer is entered by user
while (true) {
// Display message
System.out.println("Enter any valid Integer: ");
// Try block to check if any exception occurs
try {
// Parsing user input to integer
// using the parseInt() method
number = Integer.parseInt(sc.next());
// Number can be valid or invalid
// If number is valid, print and display
// the message and number
System.out.println("You entered: "
+ number);
// Get off from this loop
break;
}
// Catch block to handle NumberFormatException
catch (NumberFormatException e) {
// Print the message if exception occurred
System.out.println(
"NumberFormatException occurred");
}
}
}
}
输出:以下输出针对用户输入的不同数字
Enter any valid Integer: 12,017 NumberFormatException occurred Enter any valid Integer: Sixty4 NumberFormatException occurred Enter any valid Integer: null NumberFormatException occurred Enter any valid Integer: 436.25 NumberFormatException occurred Enter any valid Integer: 3.o NumberFormatException occurred Enter any valid Integer: 98562341789 NumberFormatException occurred Enter any valid Integer: 1000 You entered: 1000
相关用法
- Java NumberFormat clone()用法及代码示例
- Java NumberFormat equals()用法及代码示例
- Java NumberFormat getAvailableLocales()用法及代码示例
- Java NumberFormat getCurrency()用法及代码示例
- Java NumberFormat getCurrencyInstance()用法及代码示例
- Java NumberFormat getInstance()用法及代码示例
- Java NumberFormat getIntegerInstance()用法及代码示例
- Java NumberFormat getMaximumFractionDigits()用法及代码示例
- Java NumberFormat getMaximumIntegerDigits()用法及代码示例
- Java NumberFormat getMinimumFractionDigits()用法及代码示例
- Java NumberFormat getMinimumIntegerDigits()用法及代码示例
- Java NumberFormat getNumberInstance()用法及代码示例
- Java NumberFormat getPercentInstance()用法及代码示例
- Java NumberFormat getRoundingMode()用法及代码示例
- Java NumberFormat hashCode()用法及代码示例
- Java NumberFormat isGroupingUsed()用法及代码示例
- Java NumberFormat isParseIntegerOnly()用法及代码示例
- Java NumberFormat parse()用法及代码示例
- Java NumberFormat parseObject()用法及代码示例
- Java NumberFormat setCurrency()用法及代码示例
- Java NumberFormat setGroupingUsed()用法及代码示例
- Java NumberFormat setMaximumFractionDigits()用法及代码示例
- Java NumberFormat setMaximumIntegerDigits()用法及代码示例
- Java NumberFormat setMinimumFractionDigits()用法及代码示例
- Java NumberFormat setMinimumIntegerDigits()用法及代码示例
注:本文由纯净天空筛选整理自hemavatisabu大神的英文原创作品 NumberFormatException in Java with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。