【问题标题】:Android covert string to integer numberformatexceptionAndroid将字符串转换为整数格式异常
【发布时间】:2015-12-31 00:15:42
【问题描述】:

我的目标是从字符串中取出数字并将其转换为 int。 例如: 12.7(字符串)将变为 127(整数) 156-06 (string) 会变成 15606 (int)

这是我使用的代码:

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)

我在这里遗漏了什么吗?提前致谢!

【问题讨论】:

  • 你能举一个输入处理不正确的例子吗?
  • 您确定要记录结果吗?根据异常,结果为空
  • java.lang.NumberFormatException: Invalid int: "" 空字符串不是 0!
  • 好的,所以我输入了 12.7,这是日志:10-02 14:07:38.100 10383-10383/com.dcasillasappdev.myapp D/Result:127

标签: java android numberformatexception


【解决方案1】:

我错过了什么吗?

是的,空输入的情况。 您的方法适用于非空字符串, 您只需要为空输入添加特殊处理, 例如:

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());
}

【讨论】:

  • 我也尝试运行你的方法,但我仍然收到“Invalid int:”。我很困惑为什么当我的日志显示一个有效的 int 时我得到一个空输入。跨度>
  • 我知道出了什么问题。亚诺斯你的回答很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
相关资源
最近更新 更多