【问题标题】:charAt :error java.lang.NullPointerExceptioncharAt :error java.lang.NullPointerException
【发布时间】:2012-11-19 09:22:50
【问题描述】:

我正在尝试使用 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)

【问题讨论】:

  • 检查您的row1row1.B,如果它们为空。
  • 如果我更改代码 StringHandling.CHANGE(StringHandling.LEFT(row1.B,9) ,"_","S") 它可以工作,但如果我添加 row1.B.charAt(4) == '4' 不起作用:(

标签: java etl talend


【解决方案1】:

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

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

【讨论】:

  • 如果我更改代码 StringHandling.CHANGE(StringHandling.LEFT(row1.B,9) ,"_","S") 它可以工作,但如果我添加 row1.B.charAt(4) == '4' 不起作用:(
【解决方案2】:

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

在您的情况下,row1row1.Bnull

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-03-31
      • 2020-05-10
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      相关资源
      最近更新 更多