获得NumberFormatException异常在Talend
问题描述:
我得到在Talend ETL工具NumberFormatException异常以下语句:获得NumberFormatException异常在Talend
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(用符号为前缀的一些有效数字)。有一件事是确定输入中不会有任何小数。
在此先感谢。
答
在您的上下文+2
一定意味着正数2
。将字符串传递给执行解析的函数时请注意,因为它解析int,因此某些表达式(如3.5
或3,5
(小数))不会像预期的那样产生。在这些情况下,应该使用Double.parseDouble或Float.parseFloat,而不是如果您能控制该代码。另一方面,像-2
这样的负数将被解析为没有任何问题。
编辑:如果您使用位置文件,只需使用正则表达式或获取子字符串从字符串的开头删除+。您也可以使用startsWith("+")
来检查字符串是否以+开头。
答
+2
不是一个有效的intefer。它应该只是2
。
其实我是从一个位置文件得到这个值,这个值可以是类似于+0002或-0002(一些有符号前缀的有效数字)。而这段代码在我的java测试程序中起作用。 'public class main { \t public static void main(String [] args)throws IOException {0} {0128} \t \t System.out.println(new Integer(s)); \t \t System.out.println(String.valueOf(new Integer(s))); \t \t System.out.println(s); \t} }' – Leejoy 2012-07-27 20:06:26
你确定约+0002吗?我只是试了一下。 NumberFormatException失败。你能发布你的测试代码吗? – kosa 2012-07-27 20:09:07