原文: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!