数组迭代中的空指针异常

时间:2014-11-05 22:11:26

标签: java arrays nullpointerexception

我想知道为什么我得到空指针异常

我已正确初始化

并尝试手动迭代代码

我被困在一部分......

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();
        }
    }

3 个答案:

答案 0 :(得分:1)

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

修改

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您的代码由于以下行而失败:

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

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

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

假设Placard_Details1 [0]可以与null进行比较,应将其写入。{/ p>