0

我正在使用以下代码获取位于字符串数组中的字符串值(如 9s 或 4c),并仅找到第一个字符的整数值。我还希望能够将其用于具有多个数字(如 10s 或 13c)的字符串值。

total = total + Integer.parseInt(a[i].substring(0)) + 1;

这给了我一个数字格式异常。有什么想法我可能做错了吗?

4

4 回答 4

5

这将起作用

public static void getIntVal()  {
    String text = "123cc";
    String numOnly = text.replaceAll("\\D+", "");
    int numVal = Integer.valueOf(numOnly);
    System.out.println(numVal);
}

如果有人想用作双重,你可以这样做

    String text = "123.0114cc";
    String numOnly = text.replaceAll("\\p{Alpha}","");
    double numVal = Double.valueOf(numOnly);
    System.out.println(numVal);
于 2013-06-25T12:31:29.430 回答
4

str.substring(0)又是str一次(阅读文档)。您可能正在寻找

a[i].substring(0, a[i].length() - 1)  // cuts off last character
于 2013-06-25T12:26:47.607 回答
1

Ruchira 的解决方案规定删除非数字字符;在您的设置中似乎是正确的。但是,如果数字是浮点数或双数作为shreyansh jogi问题,她的解决方案是无效的。

正确实施Ruchira的思想解决方案,这将解决您的问题...

String text = "123.0121cc";
String numOnly = text.replaceAll("\\p{Alpha}", "");

如果您知道会发生什么,请说double: double numVal = Double.valueOf(numOnly); System.out.println(numVal);

否则..如果您不知道文本的其余部分是否为integerdouble,这将对您有所帮助:

if(numOnly.contains(".")) {
    double numVal = Double.valueOf(numOnly);
    System.out.println(numVal);
} else {
    int numVal = Integer.valueOf(numOnly);
    System.out.println(numVal);
}
于 2013-07-02T18:42:00.513 回答
0
total = total + Integer.parseInt(a[i].substring(0,a[i].length()-1));
于 2013-06-25T12:28:45.220 回答