我必须从字符串" 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>
答案 0 :(得分:4)
只需删除任何非数字字符;)
System.out.println("Integer value= "+str.replaceAll("[^0-9]",""));
答案 1 :(得分:2)
parseXXX()方法不接受与请求的类型不相符的字符串 - 在这种情况下为整数。您将不得不想出一种手动定位实际数字部分的技术(或者可能使用正则表达式)。
答案 2 :(得分:2)
如果您的前缀字母始终只是一个字符,请尝试以下
int i = Integer.parseInt(str.substring(1));
否则,您需要一种方法来在调用parseInt
之前找出数字部分答案 3 :(得分:1)
你应该在str上调用replaceAll来删除每个非数字字符。 Parseint只接受纯数字字符串。
答案 4 :(得分:0)
解析方法仅采用字符串格式的数字。否则会抛出NumberFormatException。