在Talend中获取NumberFormatException

时间:2012-07-27 19:54:21

标签: java java-ee talend

我在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(某些有效数字前缀为符号)。有一点可以肯定输入中不会有任何小数。

提前致谢。

3 个答案:

答案 0 :(得分:2)

+2不是有效整数。它应该只是2

答案 1 :(得分:1)

只需从数字开头删除+

num = num.replaceAll("\\+", "");
// parse, etc.

答案 2 :(得分:1)

在您的上下文中,+2必须表示正数2。在将字符串传递给执行解析的函数时要小心,因为它解析了一些表达式,例如3.53,5(小数),不会产生预期的结果。如果您可以控制该代码,则应在这些情况下使用Double.parseDouble或Float.parseFloat。另一方面,像-2这样的负数将会解决任何问题。

编辑:如果您正在使用位置文件,只需使用正则表达式或获取子字符串,从字符串的开头删除+。您也可以使用startsWith("+")检查字符串是否以+。

开头