Java中的NumberFormatException是指当使用java.lang包中的字符串(String)类或相关类型的方法(如Integer或Double)将字符串转换为数字时,如果该字符串无法解析为数字,则会抛出NumberFormatException异常。这通常发生在字符串包含非数字字符或小数点等其他字符时。
例如,以下代码尝试将一个包含字母和数字的字符串“123a”转换为整数类型:
String str = "123a";
int num = Integer.parseInt(str);
上述代码将会抛出NumberFormatException,因为字母“a”不是数字字符或小数点。
此外,对于以下代码,Double.parseDobule()同样会抛出NumberFormatException:
String str1 = "3.14.15";
double num1 = Double.parseDouble(str1);
同样的原因,输入字符串包含两个小数点,无法转换为有效浮点数类型。
为避免NumberFormatException异常,可以在将字符串转换为数字之前使用try-catch语句捕获异常。例如,对于上述代码,可以使用以下方式:
try {
String str = "123a";
int num = Integer.parseInt(str);
}
catch(NumberFormatException e) {
System.out.println("String cannot be converted to a number");
}
这样,当输入字符串无法转换为数字时,catch块将捕获NumberFormatException异常并输出自定义消息。