Pular para o conteúdo

Null Pointer Exception

Responder tópico
  • Denunciar
  • Indicar

1. Null Pointer Exception

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

Responder tópico

2. Re: Null Pointer Exception

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

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

3. Re: Null Pointer Exception

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

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

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.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder