【问题标题】:parseInt crashingparseInt 崩溃
【发布时间】:2012-01-18 04:28:51
【问题描述】:

我的文本如下所示:函数 23 34 56,我需要将 23、34 和 56 提取为数字。所以我写了这样的东西:

 String s = "function 2 3 4";
 String[] tokens = (s.trim()).split(" ");
 int num1 = Integer.parseInt(tokens[1]); 

应用程序在此处崩溃。错误可能在哪里?

我尝试找到标记的长度...结果是 4(对于字符串“func 23 34 56”)...抛出的异常是“numberformatexceptio”...注释掉 parseInt 行可以防止崩溃...我不知道出了什么问题...请帮助(Android 2.1)

如果有人可以发布代码以使用正则表达式捕获数据,那也会很有帮助...thnx..

【问题讨论】:

  • 代币[1]?您确定令牌中有任何内容吗?在访问之前测试长度可能是值得的。
  • 需要知道错误信息。在这段代码中似乎没有任何东西会导致错误。
  • 发布堆栈跟踪并尝试记录tokens[1] 的值。
  • 您确定应用程序崩溃了吗?看起来不错

标签: java android crash parseint


【解决方案1】:

您发布的代码运行良好。不过这里有一个正则表达式解决方案:

String s = "function 2 3 4";
Pattern p = Pattern.compile("function\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)");
Matcher m = p.matcher(s);
if (m.matches()) {
    System.out.println(Integer.parseInt(m.group(1)));
    System.out.println(Integer.parseInt(m.group(2)));
    System.out.println(Integer.parseInt(m.group(3)));
}

【讨论】:

  • thnks henrik for the regex :) ... parseInt 仍然导致崩溃...您的代码运行顺利!
【解决方案2】:

使用

int[] num=new int[tokens.length];
for(int i=0;i<tokens.length;i++)
{
   num[i] = Integer.parseInt(tokens[i]);
}

【讨论】:

    猜你喜欢
    • 2011-11-20
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 2011-11-22
    • 2021-05-14
    • 1970-01-01
    • 2016-11-09
    • 2018-12-11
    相关资源
    最近更新 更多