Sou novato em java. estou com problema em um programa. criei um metodo para retornar algo mas está retornando nulo e dando erro. vou postar o código:
public class Lutador {
private String nome;
private int nivel;
private int ataque;
private int defesa;
private int vida;
private int magia;
private final Raca raca;
private static int numLutadores;
public Lutador() {
this.nome = "Lutador Desconhecido";
this.nivel = 1;
this.ataque = 10;
this.defesa = 10;
this.vida = 100;
this.magia = 10;
this.raca = Raca.TERRESTRE;
numLutadores++;
}
public Lutador(String nome, int nivel, int ataque, int defesa, int vida, int magia, Raca raca) {
this.nome = nome;
this.nivel = nivel;
this.ataque = ataque;
this.defesa = defesa;
this.vida = vida;
this.magia = magia;
this.raca = raca;
numLutadores++;
}
public static int getNumLutadores() {
return numLutadores;
}
public static void setNumLutadores(int numLutadores) {
Lutador.numLutadores = numLutadores;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getNivel() {
return nivel;
}
public int getAtaque() {
return ataque;
}
public int getDefesa() {
return defesa;
}
public int getVida() {
return vida;
}
public int getMagia() {
return magia;
}
public Raca getRaca() {
return raca;
}
public void atacar(Lutador oponente) {
int dano = this.ataque - oponente.defesa;
oponente.vida -= dano;
}
}
public enum Raca {
TERRESTRE("Planeta natal: Terra."),
SAIYAJIN("Planeta natal: Vegeta."),
NAMEKUSEIJIN("Planeta natal: Namekusei.");
private String descricao;
Raca(String descricao) {
this.descricao = descricao;
}
public String getDescricao() {
return descricao;
}
}
public class Programa {
public static void main(String[] args) {
// Cria o primeiro lutador usando o construtor padrão
Lutador lutador1 = new Lutador();
lutador1.setNome("Goku");
// Cria o segundo lutador usando o construtor parametrizado
Lutador lutador2 = new Lutador("Vegeta", 5, 20, 15, 120, 20, Raca.SAIYAJIN);
// Exibe informações iniciais dos lutadores
System.out.println("Lutador 1: " + lutador1.getNome());
// está dando erro aqui. diz que lutador1.getRaca retorna nulo sendo que defini a raça padrao como terrestre
System.out.println("Raça: " + lutador1.getRaca().getDescricao());
System.out.println("Vida: " + lutador1.getVida());
System.out.println();
System.out.println("Lutador 2: " + lutador2.getNome());
System.out.println("Raça: " + lutador2.getRaca().getDescricao());
System.out.println("Vida: " + lutador2.getVida());
System.out.println();
// Lutador 1 ataca Lutador 2
System.out.println(lutador1.getNome() + " ataca " + lutador2.getNome());
lutador1.atacar(lutador2);
System.out.println("Vida de " + lutador2.getNome() + " após ataque: " + lutador2.getVida());
System.out.println();
// Lutador 2 ataca Lutador 1
System.out.println(lutador2.getNome() + " ataca " + lutador1.getNome());
lutador2.atacar(lutador1);
System.out.println("Vida de " + lutador1.getNome() + " após ataque: " + lutador1.getVida());
System.out.println();
// Mostrar o número total de lutadores criados
System.out.println("Número total de lutadores: " + Lutador.getNumLutadores());
}
}
quando rodo esse programa da o seguinte erro:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Raca.getDescricao()" because the return value of "Lutador.getRaca()" is null
at Programa.main(Programa.java:17)