-1

I am getting null pointer exception at line 9 of my code I am fairly new to java can someone tell me the concept and mistakes I am doing.

public static void main(String[] args) {
    Certificate certificate1= new Certificate(60,"cnexirk","cbnifms",77);
    Certificate certificate2= new Certificate(45,"gphspvq","pqjbhmz",62);
    Certificate certificate3= new Certificate(41,"nfpxsmp","vimiopu",89);
    Certificate certificate4= new Certificate(95,"ionouca","bsbknpx",38);
    Certificate certificate5= new Certificate(39,"yhzrafu","itnbskb",44);
    Certificate[] objArray={certificate1,certificate2,certificate3,certificate4,certificate5};
    Certificate[] objResultArray1=getEven(objArray);
    for(Certificate certificate:objResultArray1){
        System.out.println(certificate.getId()+" " + certificate.getTitle()+" " + certificate.getDate()+" " + certificate.getRank()+" ");
    }


public static Certificate[] getEven(Certificate[] cer)
{
    Certificate[] objresult=new Certificate[cer.length];
    for(int i=0;i<cer.length;i++)
    {
        if(cer[i].getRank()==77)
        {
            objresult[i]=cer[i];
        }
    }
return  objresult;
}

} `

Adarsh Pandey
  • 57
  • 1
  • 1
  • 4
  • What is line 14? Ehh, line 9? Whichever line it is? – Andreas Feb 28 '19 at 19:51
  • the for loop in main method – Adarsh Pandey Feb 28 '19 at 19:52
  • Since you only copy references to certificate where rank is 77, all the other array positions will have null reference values, so why are you confused that if fails when you try `certificate.getId()` when `certificate` is one of those null values? – Andreas Feb 28 '19 at 19:54

1 Answers1

0

The problem is here

if (cer[i].getRank() == 77) {
   objresult[i]=cer[i];
}

What if the rank isn't exactly 77? The array element remains null.
Then, when looping the returned array objResultArray1

certificate.getId()

throws the NullPointerException.

Your objResultArray1 array will look like

[Certificate@132u323, null, null, null, null]
LppEdd
  • 20,274
  • 11
  • 84
  • 139