我在talend ETL工具中获取了以下语句的NumberFormatException:
Integer.parseInt("+2");
错误详情:
Exception in component tJavaRow_3
java.lang.NumberFormatException: For input string: "+2"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at java.lang.Integer.parseInt(Integer.java:499)
这是一个在我的测试java程序中没有任何问题的简单代码。
public class Main {
public static void main(String[] args) {
String s = "+000000100";
System.out.println(String.valueOf(new Integer(s)));
}
}
实际上我从位置文件中获取此值,其值可能是+0002或-0002(某些有效数字前缀为符号)。有一点可以肯定输入中不会有任何小数。
提前致谢。
答案 0 :(得分:2)
+2
不是有效整数。它应该只是2
。
答案 1 :(得分:1)
只需从数字开头删除+
:
num = num.replaceAll("\\+", "");
// parse, etc.
答案 2 :(得分:1)
在您的上下文中,+2
必须表示正数2
。在将字符串传递给执行解析的函数时要小心,因为它解析了一些表达式,例如3.5
或3,5
(小数),不会产生预期的结果。如果您可以控制该代码,则应在这些情况下使用Double.parseDouble或Float.parseFloat。另一方面,像-2
这样的负数将会解决任何问题。
编辑:如果您正在使用位置文件,只需使用正则表达式或获取子字符串,从字符串的开头删除+。您也可以使用startsWith("+")
检查字符串是否以+。