原文:Java String to Int – How to Convert a String to an Integer,作者:Thanoshan MV

如果你使用过 Java Swing,那么它具有我们用来从 GUI 获取输入的组件,例如 JTextField 和 JTextArea。它将我们的输入作为字符串。

如果我们想使用 Swing 制作一个简单的计算器,我们需要弄清楚如何将字符串转换为整数。这就引出了一个问题——我们如何将字符串转换为整数?

在 Java 中,我们可以使用 Integer.valueOf()Integer.parseInt() 将字符串转换为整数。

使用 Integer.parseInt() 将字符串转换为整数

此方法将字符串作为原始类型 int 返回。如果字符串不包含有效整数,则它将抛出 NumberFormatException

因此,每次我们将字符串转换为 int 时,都需要通过将代码放在 try-catch 块中来处理此异常。

让我们考虑一个使用 Integer.parseInt() 将字符串转换为 int 的示例:

        String str = "25";
        try{
            int number = Integer.parseInt(str);
            System.out.println(number); // output = 25
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }

让我们尝试通过输入一个无效整数来解释这段代码:

     	String str = "25T";
        try{
            int number = Integer.parseInt(str);
            System.out.println(number);
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }

正如你在上面的代码中看到的,我们尝试将 25T 转换为整数。这不是有效的输入,因此,它必须抛出 NumberFormatException。

这是上面代码的输出:

java.lang.NumberFormatException: For input string: "25T"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.parseInt(Integer.java:615)
	at OOP.StringTest.main(StringTest.java:51)

接下来,我们将考虑如何使用 Integer.valueOf() 方法将字符串转换为整数。

使用 Integer.valueOf() 将字符串转换为整数

此方法将字符串作为整数对象返回。如果你查看 Java 文档Integer.valueOf() 返回一个整数对象,它等效于 new Integer(Integer.parseInt(s))

使用此方法时,我们会将代码放在 try-catch 块中。让我们考虑一个使用 Integer.valueOf() 方法的例子:

        String str = "25";
        try{
            Integer number = Integer.valueOf(str);
            System.out.println(number); // output = 25
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }

现在,让我们尝试通过输入一个无效的整数来解释上面的代码:

        String str = "25TA";
        try{
            Integer number = Integer.valueOf(str);
            System.out.println(number); 
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }

和前面的例子类似,上面的代码会抛出异常。

这是上面代码的输出:

java.lang.NumberFormatException: For input string: "25TA"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.valueOf(Integer.java:766)
	at OOP.StringTest.main(StringTest.java:42)

在使用上述方法之前,我们还可以创建一个方法来检查传入的字符串是否为数字。

我创建了一个简单的方法来检查传入的字符串是否为数字。

public class StringTest {
    public static void main(String[] args) {
        String str = "25";
        String str1 = "25.06";
        System.out.println(isNumeric(str));
        System.out.println(isNumeric(str1));
    }

    private static boolean isNumeric(String str){
        return str != null && str.matches("[0-9.]+");
    }
}

输出是:

true
true

isNumeric() 方法接受一个字符串作为参数。首先它检查字符串是否为空。之后我们使用 matches() 方法检查它是否包含数字 0 到9 和一个句点字符。

这是检查数值的简单方法。你可以在 Google 上编写或搜索更高级的正则表达式,以根据你的用例捕获数字。

在尝试将其转换为整数之前,最好先检查传入的字符串是否为数字。

感谢你阅读本文。

封面图片来自 Unsplash,摄影师 🇸🇮 Janko Ferlič

你可以在 Medium 联系我。

Happy Coding!