2012-11-19 67 views
2

我想使用了Talend检查4字符= 4那么我转换小号_如果我们不保持值 输入文件是一个Excel文件 谁可以帮我的charAt:错误显示java.lang.NullPointerException

row1.B.charAt(4) == '4'? StringHandling.CHANGE(StringHandling.LEFT(row1.B,9) ,"_","S"):row1.B  

我有这样的错误

[statistics] connected 
Exception in component tMap_1 
java.lang.NullPointerException 
    at projectname.test_0_1.test.tFileInputExcel_2Process(test.java:1140) 
    at projectname.test_0_1.test.runJobInTOS(test.java:1672) 
    at projectname.test_0_1.test.main(test.java:1540) 
+0

检查你的'row1'和'row1.B',如果它们为空。 – Jaguar

+0

如果我更改代码StringHandling.CHANGE(StringHandling.LEFT(row1.B,9),“_”,“S”)它的工作原理,但如果我添加row1.B.charAt(4)=='4'dosen' t工作:( – user91599

回答

4

无论row1row1.B(使用正确的帽子!属性与小写开头)是null

更新:请注意您的问题,然后row1.B为空。检查它并在((row1.B != null) && (....))((row1.B == null) || (...))或更可能的情况下控制它,或者检查您的逻辑,为其分配适当的值。

+0

如果我更改代码StringHandling.CHANGE(StringHandling.LEFT(row1.B,9),“_”,“S”)它的工作原理,但如果我添加row1.B.charAt(4)==' 4'dosen't works :( – user91599

+0

其作品感谢你 – user91599

0

当您取消引用指向null的变量时会导致空指针异常。

在你的情况下,row1row1.Bnull

0

执行此操作的最简单方法是编写用户例程,然后从行输入中的tMap调用该函数。 例如userFunction(row1.B)

使函数输出任何您需要的字符串操作。 这也允许您处理Excel中的B单元格为空的情况。你不能在tMap中使用一行代码。

相关问题