Erro Null Pointer- Não encontro o erro!

por favor me ajudem a encontrar o porque do erro:

[code] String[] line=new String[21];
line[0]= “73167176531330624919225119674426574742355349194934”;
line[1]= “96983520312774506326239578318016984801869478851843”;
line[2]= “85861560789112949495459501737958331952853208805511”;
line[3]= “12540698747158523863050715693290963295227443043557”;
line[4]= “66896648950445244523161731856403098711121722383113”;
line[5]= “62229893423380308135336276614282806444486645238749”;
line[6]= “30358907296290491560440772390713810515859307960866”;
line[7]= “70172427121883998797908792274921901699720888093776”;
line[8]= “65727333001053367881220235421809751254540594752243”;
line[9]=“52584907711670556013604839586446706324415722155397”;
line[10]=“53697817977846174064955149290862569321978468622482”;
line[11]=“83972241375657056057490261407972968652414535100474”;
line[12]=“82166370484403199890008895243450658541227588666881”;
line[13]=“16427171479924442928230863465674813919123162824586”;
line[14]=“17866458359124566529476545682848912883142607690042”;
line[15]=“24219022671055626321111109370544217506941658960408”;
line[16]=“07198403850962455444362981230987879927244284909188”;
line[17]=“84580156166097919133875499200524063689912560717606”;
line[18]=“05886116467109405077541002256983155200055935729725”;
line[19]=“71636269561882670428252483600823257530420752963450”;

    int z=0,x=0,y=0,pot;
    long largestLine=0,potG=0;
    int[]a=new int[50];
    while (x+5<=50){//line[y].length()=50 em todas as y linhas
    for(int i=x;i<5+x;i++){
        String val=String.valueOf(line[y].charAt(i));
        //System.out.println(val);
        //if (i==5)break;
        a[i]=Integer.parseInt(val);
        System.out.println(y+"    a["+i+"]= "+a[i]);
    }
    pot=(a[0+x] * a[1+x] * a[2+x] * a[3+x] * a[4+x]);
    if (pot>potG)potG=pot;
    x+=5;
    System.out.println("----------------\n"+pot+"\n==================");
    if (x==50){
        y++;
        x=0;
        potG=0;
        //break;
    }
    if (largestLine<potG)largestLine=potG;
    System.out.println("sumLine="+largestLine+"    pot="+pot);
    }
System.out.println(potG);
}[/code]

Saída:
[size=9]init:
deps-jar:
Compiling 1 source file to C:\Users\Administrador\Documents\NetBeansProjects\GujForunsTest\build\classes
compile-single:
run-single:
0 a[0]= 7
0 a[1]= 3
0 a[2]= 1
0 a[3]= 6
0 a[4]= 7

882

sumLine=882 pot=882
0 a[5]= 1
0 a[6]= 7
0 a[7]= 6
0 a[8]= 5
0 a[9]= 3

630

sumLine=882 pot=630
0 a[10]= 1
0 a[11]= 3
0 a[12]= 3
0 a[13]= 0
0 a[14]= 6

0

sumLine=882 pot=0
0 a[15]= 2
0 a[16]= 4
0 a[17]= 9
0 a[18]= 1
0 a[19]= 9

648

sumLine=882 pot=648
0 a[20]= 2
0 a[21]= 2
0 a[22]= 5
0 a[23]= 1
0 a[24]= 1

20

sumLine=882 pot=20
0 a[25]= 9
0 a[26]= 6
0 a[27]= 7
0 a[28]= 4
0 a[29]= 4

6048[/size]
[size=18][/size]
[size=9]

sumLine=31752 pot=1260
19 a[0]= 7
19 a[1]= 1
19 a[2]= 6
19 a[3]= 3
19 a[4]= 6

756

sumLine=31752 pot=756
19 a[5]= 2
19 a[6]= 6
19 a[7]= 9
19 a[8]= 5
19 a[9]= 6

3240

sumLine=31752 pot=3240
19 a[10]= 1
19 a[11]= 8
19 a[12]= 8
19 a[13]= 2
19 a[14]= 6

768

sumLine=31752 pot=768
19 a[15]= 7
19 a[16]= 0
19 a[17]= 4
19 a[18]= 2
19 a[19]= 8

0

sumLine=31752 pot=0
19 a[20]= 2
19 a[21]= 5
19 a[22]= 2
19 a[23]= 4
19 a[24]= 8

640

[color=red]Exception in thread “main” java.lang.NullPointerException
at ProblemasEulerProject.p8.main(p8.java:33)[/color]sumLine=31752 pot=640
19 a[25]= 3
19 a[26]= 6
19 a[27]= 0
19 a[28]= 0
19 a[29]= 8

0

sumLine=31752 pot=0
19 a[30]= 2
19 a[31]= 3
19 a[32]= 2
19 a[33]= 5
19 a[34]= 7

420

sumLine=31752 pot=420
19 a[35]= 5
19 a[36]= 3
19 a[37]= 0
19 a[38]= 4
19 a[39]= 2

0

sumLine=31752 pot=0
19 a[40]= 0
19 a[41]= 7
19 a[42]= 5
19 a[43]= 2
19 a[44]= 9

0

sumLine=31752 pot=0
19 a[45]= 6
19 a[46]= 3
19 a[47]= 4
19 a[48]= 5
19 a[49]= 0

0

sumLine=31752 pot=0
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)[/size]

Ajuda-em qual o erro?

Qual é a linha 33 do arquivo p8.java?

mals ta ai o programa completo:

package ProblemasEulerProject;

public class p8 {
    public static void main(String[]args){
        
        String[] line=new String[21];
        line[0]= "73167176531330624919225119674426574742355349194934";
        line[1]= "96983520312774506326239578318016984801869478851843";
        line[2]= "85861560789112949495459501737958331952853208805511";
        line[3]= "12540698747158523863050715693290963295227443043557";
        line[4]= "66896648950445244523161731856403098711121722383113";
        line[5]= "62229893423380308135336276614282806444486645238749";
        line[6]= "30358907296290491560440772390713810515859307960866";
        line[7]= "70172427121883998797908792274921901699720888093776";
        line[8]= "65727333001053367881220235421809751254540594752243";
        line[9]="52584907711670556013604839586446706324415722155397";
        line[10]="53697817977846174064955149290862569321978468622482";
        line[11]="83972241375657056057490261407972968652414535100474";
        line[12]="82166370484403199890008895243450658541227588666881";
        line[13]="16427171479924442928230863465674813919123162824586";
        line[14]="17866458359124566529476545682848912883142607690042";
        line[15]="24219022671055626321111109370544217506941658960408";
        line[16]="07198403850962455444362981230987879927244284909188";
        line[17]="84580156166097919133875499200524063689912560717606";
        line[18]="05886116467109405077541002256983155200055935729725";
        line[19]="71636269561882670428252483600823257530420752963450";

        int z=0,x=0,y=0,pot;
        long largestLine=0,potG=0;
        int[]a=new int[50];
        while (x+5<=50){//line[y].length()=50 em todas as y linhas
        for(int i=x;i<5+x;i++){
            String val=String.valueOf(line[y].charAt(i));
            //System.out.println(val);
            //if (i==5)break;
            a[i]=Integer.parseInt(val);
            System.out.println(y+"    a["+i+"]= "+a[i]);
        }
        pot=(a[0+x] * a[1+x] * a[2+x] * a[3+x] * a[4+x]);
        if (pot>potG)potG=pot;
        x+=5;
        System.out.println("----------------\n"+pot+"\n==================");
        if (x==50){
            y++;
            x=0;
            potG=0;
            //break;
        }
        if (largestLine<potG)largestLine=potG;
        System.out.println("sumLine="+largestLine+"    pot="+pot);
        }
    System.out.println(potG);
    }
}

while (x+5<=50){//line[y].length()=50 em todas as y linhas

você só tem 21 linhas ! e apenas 20 referenciando objetos em heap…

line[y] com y = 20 será nulo … e out of bounds acima disso…