Android 将字符串转换为整数格式异常
Android covert string to integer numberformatexception
我的目标是从字符串中取出数字并将其转换为 int。
例如:
12.7(字符串)将变为 127(整数)
156-06(字符串)将变为 15606(整数)
这是我使用的代码:
private static int convertToDigits(String input){
StringBuilder sb = new StringBuilder(input.length());
for(int i = 0; i < input.length(); i++){
char c = input.charAt(i);
if(c > 47 && c < 58){
sb.append(c);
}
}
String result = sb.toString().trim();
Log.d("Result", result);
return Integer.parseInt(result);
}
当我记录结果时,我得到 127 作为我想要的字符串值,但是当我将其转换为 int 时,我得到 NumberFormatException
:
java.lang.NumberFormatException: Invalid int: ""
at java.lang.Integer.invalidInt(Integer.java:138)
at java.lang.Integer.parseInt(Integer.java:358)
at java.lang.Integer.parseInt(Integer.java:334)
at com.dcasillasappdev.mytrackfieldteam.utility.Utility.convertToDigits(Utility.java:333)
我是不是漏掉了什么?提前致谢!
Am I missing something here?
是的,空输入的情况。
您的方法适用于非空字符串,
你只需要为空输入添加特殊处理,
例如:
if (input.isEmpty()) {
return 0; // or whatever way you want to handle this case ...
}
顺便说一句,这里有一个更简单的方法来去除所有非数字字符并转换为 int
:
return Integer.parseInt(input.replaceAll("\D+", ""));
但如果您真的想坚持原来的方法来迭代字符并使用字符串生成器,那么这里有一个更好的写法:
private static int convertToDigits(String input) {
if (input.isEmpty()) {
return 0;
}
StringBuilder builder = new StringBuilder(input.length());
for (char c : input.toCharArray()) {
if('0' <= c && c <= '9') {
builder.append(c);
}
}
return Integer.parseInt(builder.toString());
}
我的目标是从字符串中取出数字并将其转换为 int。 例如: 12.7(字符串)将变为 127(整数) 156-06(字符串)将变为 15606(整数)
这是我使用的代码:
private static int convertToDigits(String input){
StringBuilder sb = new StringBuilder(input.length());
for(int i = 0; i < input.length(); i++){
char c = input.charAt(i);
if(c > 47 && c < 58){
sb.append(c);
}
}
String result = sb.toString().trim();
Log.d("Result", result);
return Integer.parseInt(result);
}
当我记录结果时,我得到 127 作为我想要的字符串值,但是当我将其转换为 int 时,我得到 NumberFormatException
:
java.lang.NumberFormatException: Invalid int: ""
at java.lang.Integer.invalidInt(Integer.java:138)
at java.lang.Integer.parseInt(Integer.java:358)
at java.lang.Integer.parseInt(Integer.java:334)
at com.dcasillasappdev.mytrackfieldteam.utility.Utility.convertToDigits(Utility.java:333)
我是不是漏掉了什么?提前致谢!
Am I missing something here?
是的,空输入的情况。 您的方法适用于非空字符串, 你只需要为空输入添加特殊处理, 例如:
if (input.isEmpty()) {
return 0; // or whatever way you want to handle this case ...
}
顺便说一句,这里有一个更简单的方法来去除所有非数字字符并转换为 int
:
return Integer.parseInt(input.replaceAll("\D+", ""));
但如果您真的想坚持原来的方法来迭代字符并使用字符串生成器,那么这里有一个更好的写法:
private static int convertToDigits(String input) {
if (input.isEmpty()) {
return 0;
}
StringBuilder builder = new StringBuilder(input.length());
for (char c : input.toCharArray()) {
if('0' <= c && c <= '9') {
builder.append(c);
}
}
return Integer.parseInt(builder.toString());
}