3

我必须从字符串“a23”中获取数字 23。运行以下程序时,会出现以下错误。

public class GetIntFromString {

    public static void main(String[] args) {

        String str = "a23";

        int i = Integer.parseInt(str);

        System.out.println("Integer value= "+i);

        System.out.println("value= "+str);

    }
}

这是堆栈跟踪

Exception in thread "main" java.lang.NumberFormatException: For Input String: "a23"

at java.lang.NumberFormatException.forInputString<NumberFormatException.java.48>
at java.lang.Integer.ParseInt<Integer.java.449>
at java.lang.Integer.ParseInt<Integer.java.499>
at GetIntFromString.main<GetIntFromString.java.9>
4

5 回答 5

4

Just remove any non-digit characters ;)

System.out.println("Integer value= "+str.replaceAll("[^0-9]","")); 
于 2012-03-25T18:25:54.840 回答
2

如果您的前缀字母总是只有一个字符,请尝试以下操作

int i = Integer.parseInt(str.substring(1));

否则,您需要一种在调用 parseInt 之前找出数字部分的方法

于 2012-03-14T08:33:45.177 回答
2

parseXXX() 方法不接受与所请求的类型不相符的字符串——在这种情况下为整数。您将不得不找出一种手动定位实际数字部分的技术(或者可能使用正则表达式)。

于 2012-03-14T08:32:28.150 回答
1

You should call replaceAll on str, to remove every non numeric character. Parseint only accepts pure numeric strings.

于 2012-03-25T18:28:58.223 回答
0

解析方法只接受字符串格式的数字。否则它会抛出 NumberFormatException。

于 2012-03-14T09:38:30.747 回答