2012-11-19 88 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中使用一行代碼。

相關問題