Erro Null Pointer- Não encontro o erro!

3 respostas
DavidUser
por favor me ajudem a encontrar o porque do erro:
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);
    }
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?

3 Respostas

B

Qual é a linha 33 do arquivo p8.java?

DavidUser

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

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…

Criado 19 de abril de 2009
Ultima resposta 19 de abr. de 2009
Respostas 3
Participantes 3