2

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)
4

3 に答える 3

4

row1または(適切な大文字row1.Bを使用してください! 属性は小文字で始まります)null

更新:あなたの質問へのコメントに関しては、row1.Bnull です。それをチェックして、条件でそれを制御するか、((row1.B != null) && (....))または((row1.B == null) || (...))(おそらく)ロジックをチェックして適切な値を割り当てます。

于 2012-11-19T09:26:10.530 に答える
0

null を指している変数を逆参照すると、null ポインター例外が発生します。

あなたの場合、row1またはrow1.Bですnull

于 2012-11-19T09:27:54.520 に答える
0

これを行う最もクリーンな方法は、ユーザー ルーチンを記述し、行入力で tMap から関数を呼び出すことです。例 userFunction(row1.B)

関数が必要な文字列操作を出力するようにします。これにより、Excel の B セルが null の場合も処理できます。tMap のワンライナーでそれを行うことはできません。

于 2012-11-20T22:56:02.283 に答える