Error: Exception in thread "main" java.lang.Nullpointerexception at pub.Pub.main(Pub.java:18)

Asked

Viewed 319 times

0

I’m developing a program in java, I’ve looked at several places to know what I’m missing, all said that my variables are receiving null value, but I’ve tried to instantiate values in it, use methods, but nothing.

The error is this "Exception in thread "main" java.lang.Nullpointerexception at pub.Pub.main(Pub.java:18)".

Anyone can help?

package pub;

public class Pub {

public static void main(String[] args) {
       Pessoa p = new Pessoa();

       Funcionario f = new Funcionario();
       f.nome = "asd";
       f.cargo = "Bartender";
       f.alteraSalario(950);
       f.idade = 17;

       Musico m = new Musico();
       m.nome = "Aldair";
       m.idade = 19;
       m.instrumento = "Violon";
       m.banda.nomeBanda = "Aldair Playboy";
       m.banda.descricao = "Lorem ipsun";
       m.banda.genero = "Forró";
       m.banda.show.data = "07/05/2018";
       m.banda.show.hora = "23:59";

       System.out.println(p.Pessoa(f));
       System.out.println(p.Pessoa(m));
}

}

Here the other classes:

Pessoa.java

package pub;

public class Pessoa {
public String nome;
public int idade;

public String Pessoa(Funcionario pessoa){
    return "Nome:" + pessoa.nome + "\n" +
            "Idade:" + pessoa.idade + " " + pessoa.retornaIdade() + "\n" +
            "Cargo:" + pessoa.cargo + "\n" +
            "Salario:" + pessoa.retornaSalario();
}
public String Pessoa(Musico pessoa){
    return "Nome:" + pessoa.nome + "\n" +
            "Idade:" + pessoa.idade + " " + pessoa.retornaIdade() + "\n" +
            "Instrumento:" + pessoa.instrumento + "\n" +
            "Banda:" + pessoa.banda.nomeBanda + "\n" +
            "Genero:" + pessoa.banda.genero + "\n" + 
            "Descrição:" + pessoa.banda.descricao + "\n" +
            "Data/Hora:" + pessoa.banda.retornaData();    
}

}

Musico.java

package pub;

public class Musico extends Pessoa {
public String instrumento;
public Banda banda;

public String retornaIdade() {
    if(idade < 18){
        return "Menor de idade!!";
    }else{
        return "OK!!";
    }
}  
@Override
public String Pessoa(Musico pessoa){
    return "Nome:" + pessoa.nome + "\n" +
            "Idade:" + pessoa.idade + " " + pessoa.retornaIdade() + "\n" +
            "Instrumento:" + pessoa.instrumento + "\n" +
            "Banda:" + pessoa.banda.nomeBanda + "\n" +
            "Genero:" + pessoa.banda.genero + "\n" + 
            "Descrição:" + pessoa.banda.descricao + "\n" +
            "Data/Hora:" + pessoa.banda.retornaData();    
}
}

Java band.

package pub;

public class Banda {
public String nomeBanda;
public String genero;
public String descricao;
public Show show;

public String retornaData(){
    return show.data + " " + show.hora;
}

}

Java show.

package pub;

public abstract class Show {
public String hora;
public String data;

public abstract String retornaData();

}
  • Where is line 18? The error occurs on it,

  • All these lines give error m.banda.nameBanda = "Aldair Playboy"; m.banda.Description = "Lorem ipsun"; m.banda.genero = "Forró"; m.banda.show.data = "07/05/2018"; m.banda.show.hora = "23:59";

2 answers

2


You have to create a Band object first, before assigning values to it.

m.banda = new Banda();

0

As Welson Teles said you have to create the Band type object before assigning the value, recommend that you put in the Musico class constructor to start the variable so you wouldn’t have to create every time you use the Musico class

public Musico(){
    this.banda = new Banda();
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.