Null Pointer Exception

1. Null Pointer Exception

Roberto Kennedy
KaiserKennedy

(usa XUbuntu)

Enviado em 22/11/2019 - 11:26h

Olá, eu não consigo entender esse erro. Qual linha está apontando pra um ponteiro nulo?

package BiscoitoSorte;
import java.util.ArrayList;

public class BiscoitoSorte {
private ArrayList<String> mensagem;
//Construtor
public BiscoitoSorte () {
this.preenchedorMensagem();
};

private void preenchedorMensagem() {
this.mensagem.add("msg1");
this.mensagem.add("msg2");
this.mensagem.add("msg3");
this.mensagem.add("msg4");
this.mensagem.add("msg5");
this.mensagem.add("msg6");
this.mensagem.add("msg7");
this.mensagem.add("msg8");
this.mensagem.add("msg9");
this.mensagem.add("msg10");

};

public String getMensagem() {
int numAleatorio = (int)(Math.random() * 10 );
return this.mensagem.get(numAleatorio);
};

public static void main (String args[]) {
BiscoitoSorte bs = new BiscoitoSorte();
String string = bs.getMensagem();
System.out.println(string);
};
};



  


2. Re: Null Pointer Exception

Leandro Silva
LSSilva

(usa Outra)

Enviado em 22/11/2019 - 12:26h

Se não me engano, "string" é palavra reservada no Java.


3. Re: Null Pointer Exception

Roberto Kennedy
KaiserKennedy

(usa XUbuntu)

Enviado em 24/11/2019 - 14:24h

LSSilva escreveu:

Se não me engano, "string" é palavra reservada no Java.


Não vi isso na documentação, porém mudei e continua com erro;


4. Re: Null Pointer Exception

Leandro Silva
LSSilva

(usa Outra)

Enviado em 24/11/2019 - 22:28h

Realmente, falei sem consultar e, no achismo, acabei falando o que não devia.

Talvez no seu caso, você tenha que inicializar o array (falando sem analisar o código).



5. Re: Null Pointer Exception

Rodrigo
omag0

(usa Debian)

Enviado em 26/11/2019 - 10:23h

Acredito que o erro esteja aqui

private ArrayList<String> mensagem;
//Construtor
public BiscoitoSorte () {
this.preenchedorMensagem();
};

private void preenchedorMensagem() {
this.mensagem.add("msg1");
this.mensagem.add("msg2");
this.mensagem.add("msg3");
this.mensagem.add("msg4");
this.mensagem.add("msg5");
this.mensagem.add("msg6");
this.mensagem.add("msg7");
this.mensagem.add("msg8");
this.mensagem.add("msg9");
this.mensagem.add("msg10");

};


perceba que voce declara uma lista:
private ArrayList<String> mensagem;, 

e depois você atribui valores a lista
 mensagem.add("msg10"); 

mas em momento algum você inicia a lista
tente
private ArrayList<String> mensagem = new ArrayList() 



Outra coisa, evite declarar variáveis que recebereção coleções (como list, arrays, sets) com os respectivas classes (List<>, Set<>), isso torna seu código muito rígido.
Use sempre abstrações, nesse caso, o Collection (como mostra no site https://docs.oracle.com/javase/8/docs/api/java/util/List.html )

Seria algo do tipo
 List<String> mensagem = Collections.emptyList(); 


ainda está rigido, mas é um ponto de partida para começar.
Eu sempre faço
 Collection<String> mensagem ; 

E ao invés de iniciar com new, eu faço com injeção de depencia.
Fica algo mais ou menos assim:


package BiscoitoSorte;
import java.util.ArrayList;

public class BiscoitoSorte(Collection<String> mensagem) {

//Construtor
public BiscoitoSorte () {
this.preenchedorMensagem();
};

private void preenchedorMensagem() {
this.mensagem.add("msg1");
this.mensagem.add("msg2");
this.mensagem.add("msg3");
this.mensagem.add("msg4");
this.mensagem.add("msg5");
this.mensagem.add("msg6");
this.mensagem.add("msg7");
this.mensagem.add("msg8");
this.mensagem.add("msg9");
this.mensagem.add("msg10");

};

public String getMensagem() {
int numAleatorio = (int)(Math.random() * 10 );
return this.mensagem.get(numAleatorio);
};

public static void main (String args[]) {
BiscoitoSorte bs = new BiscoitoSorte();
String string = bs.getMensagem();
System.out.println(string);
};
};


não testei o código então pode conter erros.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts