charAt:错误java.lang.NullPointerException

时间:2012-11-19 09:22:51

标签: java etl talend

我正在尝试使用talend检查第4个字符= 4然后我转换S _如果不是我们保留值 输入文件是Excel文件 谁可以帮助我

 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)

3 个答案:

答案 0 :(得分:4)

row1row1.B(使用正确的大写!属性以小写字母开头)是null

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

答案 1 :(得分:0)

取消引用指向null的变量时会引发空指针异常。

在您的情况下,row1row1.Bnull

答案 2 :(得分:0)

最简单的方法是编写一个用户例程,然后在行输入上从tMap调用该函数。 例如。 userFunction(row1.B)

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