【问题标题】:Null pointer exception in array iteration数组迭代中的空指针异常
【发布时间】:2014-11-05 22:11:26
【问题描述】:

我想弄清楚为什么会出现空指针异常

我已经正确初始化了

并且已经尝试手动迭代代码

我都被部分卡住了......

private static final int PlacardHolderLength= 5 ;
private static final String  PlacardHolder[]= new String[5];
int PlacardHolderRemainingslots=PlacardHolder.length;

if((Placard_Details1[0]!=null) && (Placard_Details1[2]=="no"))
{
    for(int i=0 ; i<=PlacardHolder.length-1 ; i++)
    {
        // CHECK IF PRIMARY PLACARD IS PRESENT
        System.out.println("Value" +i);
        System.out.println("Valu2  " +PlacardHolder[0]);
        System.out.println("PLACARD HOLDER POSITION" +PlacardHolderPositions);

        if(PlacardHolder[i].equals(Placard_Details1[0]))
        { 
            //PLACARD eXISTING  DIALOG  BOX
            Flag_Placard_Existing=true;
            AlertMessageSamePlacard();
            getBannerData();
        }
    }

【问题讨论】:

  • 不确定这与窗口泄漏有什么关系。是否有任何异常或行号或代码的 sn-p 导致问题?
  • 对不起,我打错了标题...
  • 我在处得到一个空指针异常
  • 在for循环中..它迭代到1但我没有看到最后一个
  • 您可能想阅读本教程:javawithus.com/tutorial/array-of-objects

标签: java arrays nullpointerexception


【解决方案1】:

由于 PlacardHolder 是一个对象数组 (Strings),因此每个条目都使用 null 进行初始化。在遍历数组之前,您应该为每个数组元素分配一个实际的对象。

编辑

小细节:如果数组中的条目为空,则不能从此元素调用任何方法,因此PlacardHolder[i].equals(...) 会生成异常。

【讨论】:

  • 感谢您的快速回复但是循环迭代到第二个元素而不是最后一个元素
【解决方案2】:

您确实没有正确初始化数组,至少在显示的代码中,这是随机片段(您将 wtongly-static 字段声明与方法体混合)。声明一个数组仍然不会将元素放入其中。

【讨论】:

    【解决方案3】:

    您的代码因以下行而失败:

    if(PlacardHolder[i].equals(Placard_Details1[0]))
    

    PlacardHolder[i] 可能尚未初始化。在您的 if 语句中,您检查 Placard_Details1[0] 并且如果它是具有被调用方法的对象就足够了。

    if (Placard_Details1[0].equals(PlacardHolder[i]))
    

    假设 Placard_Details1[0] 可以与应该写入的 null 进行比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 2013-01-18
      相关资源
      最近更新 更多