[RESOLVIDO]"Exception in thread "main" java.lang.NullPointerException" Como resolver?

Exception in thread "main" java.lang.NullPointerException
at l2ex9.Main.main(Main.java:26)
Java Result: 1

Estou tentando calcular a permutação de um elemento B em A, mais esta exception não deixa, como resolvo?

[code]
package l2ex9;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
    String n1,n2;
    int nn1, nn2;
    int[] nd1 = null, nd2 = null;
    int x,y;
    int contOfEq=0;
    Scanner s= new Scanner(System.in);

    System.out.println("entre com o N1 ");
    n1=s.nextLine();
   nn1=Integer.parseInt(n1);
    System.out.println("entre com o N2 ");
    n2=s.nextLine();
   nn2=Integer.parseInt(n2);
    x=0;

    while(x<=n1.length()){
        
            nd1[x]=nn1%(10*(x+1));

    }

       x=0;

    while(x<=n2.length()){
            nd2[x]=nn2%(10*(x+1));

    }

    x=0;
    y=0;
    while(x<n1.length())
    {

        while(y><n2.length())
        {
             if(nd2[y]==nd1[x])
             {
             contOfEq=contOfEq+1;
             }

             y=y+1;
        }
        x=x+1;
    }

    if(contOfEq==n1.length())
    {
        System.out.print("é permutação ");
    }
    else if(contOfEq!=n1.length())
    {
        System.out.print("não é permutação ");
    }




}

}
[/code]>

Fala java newb, provavelmente seu erro esta nesta linha:

nd1[x]=nn1%(10*(x+1)); 

Voce nao inicializou seu array.

[quote=Dota]Fala java newb, provavelmente seu erro esta nesta linha:

nd1[x]=nn1%(10*(x+1)); 

Voce nao inicializou seu array.[/quote]

Sim, mais ai não esta inicialisando?

qualquer cois um debug resolve

[quote=DarthVictor][quote=Dota]Fala java newb, provavelmente seu erro esta nesta linha:

nd1[x]=nn1%(10*(x+1)); 

Voce nao inicializou seu array.[/quote]

Sim, mais ai não esta inicialisando?[/quote]

Não, voce tem que inicializar no momento que esta criando, desse jeito vc nao tem a posição “x”.

[quote=Dota][quote=DarthVictor][quote=Dota]Fala java newb, provavelmente seu erro esta nesta linha:

nd1[x]=nn1%(10*(x+1)); 

Voce nao inicializou seu array.[/quote]

Sim, mais ai não esta inicialisando?[/quote]

Não, voce tem que inicializar no momento que esta criando, desse jeito vc nao tem a posição “x”.[/quote]

Olhe o “= null” no comesso do código.

E você acha que isso int[] nd1 = null e depois isso nd1[x] = 1 funciona?
Se sim, é preciso dar uma estudada um pouco mais no básico do Java amigo. Tem ótimas apostilas da Caleum para download e por sinal, gratuita.
De preferência da FJ-11.

Tente assim, por exemplo: int[] nd1 = new int[10].
Um array de 10 posições.

Se quiser, leia sobre ArrayList(), acho muito mais dinamico :slight_smile:

Abraços.

int[] nd1 = null, nd2 = null;  

Você não criou o vtor, ele está null, você está setando o valor em um local que não existe.

Daí o nome NullPointerException. Viu só? Não é mera coincidência. :wink:

[quote=DarthVictor][quote=Dota][quote=DarthVictor][quote=Dota]Fala java newb, provavelmente seu erro esta nesta linha:

nd1[x]=nn1%(10*(x+1)); 

Voce nao inicializou seu array.[/quote]

Sim, mais ai não esta inicialisando?[/quote]

Não, voce tem que inicializar no momento que esta criando, desse jeito vc nao tem a posição “x”.[/quote]

Olhe o “= null” no comesso do código.[/quote]

Coloca assim que acho que vai funcionar. (Não entendi muito o seu código mas acho que é isso que procura).

int[] nd1 = new int[n1.length()];

Flw

Você ainda vai ver muito essa excessão em sua vida d programador :idea:

rsrs…pois é né? rs.

1 curtida

[quote=Frantic Avenger][quote=DarthVictor][quote=Dota][quote=DarthVictor][quote=Dota]Fala java newb, provavelmente seu erro esta nesta linha:

nd1[x]=nn1%(10*(x+1)); 

Voce nao inicializou seu array.[/quote]

Sim, mais ai não esta inicialisando?[/quote]

Não, voce tem que inicializar no momento que esta criando, desse jeito vc nao tem a posição “x”.[/quote]

Olhe o “= null” no comesso do código.[/quote]

Coloca assim que acho que vai funcionar. (Não entendi muito o seu código mas acho que é isso que procura).

int[] nd1 = new int[n1.length()];

Flw[/quote]

Poxa, valeu, eu estava declarando o vetor de forma errada. Estava muito sonolento.

rsrs…pois é né? rs.[/quote]

Eu sei, já percebi meu erro. :slight_smile:

Tem coisa pior, ter um chefe/cliente que quer que você adivinhe o que ele quer é bem pior que uma excessão porque programei errado.