【Java】字符串转换为数字:Integer的parseInt方法

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
the parseInt(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编码也可以,一般不会这样用。

我们先来列举一些正确的例子,如:

  1. "100"–>100
  2. "-100"–>-100
  3. "+200"–>200

示例代码:

String s = "100";
int sToInt = Integer.parseInt(s);

但是,如果字符串出现了其他符号,就会抛出NumberFormatException

例如:

  1. "1.1"
  2. "abc"
  3. "&%#"

我们需要捕获并且处理这个异常,给出一个示例代码。

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
0

Process finished with exit code 0

我们可以看到最后Process finished with exit code 0,说明程序,成功处理了异常并且正常退出了。

参考资料

[1] Java11官方文档 Integer.parseInt(String s)

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XV_

感谢您的认可,我会继续努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值