Java官方文档[1]的解释
public static int parseInt(String s) throws NumberFormatException
Parses the string argument as a signed decimal integer. The characters in the string must all be
decimal digits, except that the first character may be an ASCII minus sign ‘-’ (’\u002D’) to indicate
a negative value or an ASCII plus sign ‘+’ (’\u002B’) to indicate a positive value. The resulting
integer value is returned, exactly as if the argument and the radix 10 were given as arguments to
theparseInt(java.lang.String, int)
method.
_
Parameters:
s - a String containing the int representation to be parsed
Returns:
the integer value represented by the argument in decimal.
Throws:
NumberFormatException
- if the string does not contain a parsable integer.
中文翻译
我来简单翻译一部分。
对于Integer
类的静态方法public static int parseInt(String s) throws NumberFormatException
它能够将String类型的参数,解析为一个带符号的十进制整数。字符串中的字符,必须是十进制数字,在这个十进制数字的第一个字符前,可以是ASCII字符的-
或Unicode字符的'\u002D
来表明这是一个负值,或者是一个ASCII字符的+
或Unicode字符的'\u002B
来表明这是一个正值。这个作为结果的整数值会被return
,如果使用方法parseInt(java.lang.String, int)
并为其传参(String s
,10
)也能达到和当前方法一样的效果。
- 参数:
- s: 一个要被解析的字符串,这个字符串看起来是一个整数
- 返回值:
- 一个整数值,它由十进制数字表示
- 异常抛出:
NumberFormatException
:如果字符串没有包含可以被解析的整数
极简解释 & 应用
简而言之,我们就是要将String类型的整数转化成int类型的整数。
字符串只允许出现十进制数字、正号(+)和负号(-),当然,如果是Unicode编码也可以,一般不会这样用。
我们先来列举一些正确的例子,如:
"100"
–>100
"-100"
–>-100
"+200"
–>200
示例代码:
String s = "100";
int sToInt = Integer.parseInt(s);
但是,如果字符串出现了其他符号,就会抛出NumberFormatException
。
例如:
"1.1"
"abc"
"&%#"
我们需要捕获并且处理这个异常,给出一个示例代码。
public class TestSubmitException {public static void main(String[] args) {String[] salesOrders = {"1111", "28120821", "-111", "+1111", "1.11", "abc"};submitOrders(salesOrders);}public static void submitOrders(String[] salesOrders) {int[] salesOrdersInteger = new int[salesOrders.length];try {int i = 0;for (String s : salesOrders) {salesOrdersInteger[i] = Integer.parseInt(s);i++;}} catch (NumberFormatException e) { e.printStackTrace();}for (int a : salesOrdersInteger) {System.out.println(a);}}
}
运行结果是
java.lang.NumberFormatException: For input string: "1.11"at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)at java.base/java.lang.Integer.parseInt(Integer.java:652)at java.base/java.lang.Integer.parseInt(Integer.java:770)at testCode.TestSubmitException.submitOrders(TestSubmitException.java:35)at testCode.TestSubmitException.main(TestSubmitException.java:21)
1111
28120821
-111
1111
0
0Process finished with exit code 0
我们可以看到最后Process finished with exit code 0
,说明程序,成功处理了异常并且正常退出了。
参考资料
[1] Java11官方文档 Integer.parseInt(String s)