问题描述
我正在尝试将String
转换为Integer
。
我用过
int n1 = Integer.valueOf(s1,10);
我也试过
int n1 = Integer.parseInt(s1,10);
但我收到错误
E/AndroidRuntime: FATAL EXCEPTION: main
E/AndroidRuntime: Process: com.example.anmol.calc, PID: 19430
E/AndroidRuntime: java.lang.NumberFormatException: Invalid int: ""
E/AndroidRuntime: at java.lang.Integer.invalidInt(Integer.java:138)
E/AndroidRuntime: at java.lang.Integer.parseInt(Integer.java:358)
我该如何解决?
1楼
你得到一个
java.lang.NumberFormatException: Invalid int: ""
因为空String
不是int
。
您可以使用正则表达式测试String
包含数字( \\\\d+
是一位或多位数字)。
就像是,
int n1 = 0;
if (s1 != null && s1.matches("\\d+")) {
n1 = Integer.parseInt(s1);
}
你也可以用三元来写。 喜欢,
int n1 = (s1 == null || !s1.matches("\\d+")) ? 0 : Integer.parseInt(s1);