I have an error that I can not identify in println

3

These are my classes but the error occurs:

  

Exception in thread "main" java.lang.NullPointerException       at official.20.main.main (Principal.java:16)   /home/lucas/.cache/netbeans/8.1/executor-snippets/run.xml:53: Java returned: 1   BUILD FAILED (total time: 0 seconds)   Here is my code:

Classe Principal:

public class Principal {

    public static void main(String[] args) {

        Funcionario lucas = new Funcionario();
        lucas.setSalario(1856.85);
        lucas.setEndereco("Rua Frei Caneca");
        lucas.setEstadoCivil("Solteiro");
        lucas.setNomeDoDepartamento("Auxiliar");

        lucas.pessoa = new Pessoa();
        lucas.pessoa.setNome("Lucas Alves Cardoso de Jesus");
        lucas.pessoa.setRg(123456891);

        lucas.data.setDatadia(13);
        lucas.data.setDatames(05);
        lucas.data.setDiaano(94);

        lucas.getAnual();

        System.out.println(lucas.getEndereco());

    }

}

Class Officer

public class Funcionario {

    private String NomeDoDepartamento;
    private double Salario;
    private double anual;
    private String EstadoCivil;
    private String Endereco;
    int proximo = 0;
    Pessoa pessoa;
    Data data;


    //get obter set mudar

    public String getNomeDoDepartamento(){
        return this.NomeDoDepartamento;
    }

    public void setNomeDoDepartamento(String nomedepartamento){
        this.NomeDoDepartamento = nomedepartamento;
    }

    public double getSalario(){
        return this.Salario;
    }

    public void setSalario (double salario){
        this.Salario = salario;
    }

    public double getAnual(){
        return this.Salario*12;
    }

    public String getEstadoCivil(){
        return this.EstadoCivil;
    }

    public void setEstadoCivil(String estadocivil){
        this.EstadoCivil = estadocivil;
    }

    public String getEndereco(){
        return this.Endereco;
    }

    public void setEndereco (String endereco){
        this.Endereco = endereco;
    }


}
    
asked by anonymous 17.11.2016 / 23:15

2 answers

1

You have not set the data property before line 16 of your main class:

lucas.data = new Data();
lucas.data.setDatadia(13);

Otherwise I have at least 2 tips to give you:

1) Use the constructor to set new objects or create auxiliary constructs:

public Funcionario() {
  this.pessoa = new Pessoa();
  this.data = new Data();
}

OR

public Funcionario(){} // construtor padrão

public Funcionario(Pessoa pessoa) {
  this.pessoa = pessoa;
}
public Funcionario(Data data) {
  this.data = data;
}
public Funcionario(Pessoa pessoa, Data data) {
  this.pessoa = pessoa;
  this.data = data;
}

So allowing:

Funcionario funcionario = new Funcionario(); 
// funcionário padrão, sem Pessoa e Data

Funcionario funcionario = new Funcionario(new Pessoa()); 
// funcionário com Pessoa e sem Data

Funcionario funcionario = new Funcionario(new Data()); 
// funcionário sem Pessoa e com Data

Funcionario funcionario = new Funcionario(new Pessoa(), new Data); 
// funcionário com Pessoa e Data

2) Do not use direct access to these properties, always use setters and getters :

public Pessoa getPessoa() {
  return this.pessoa;
}

public void setPessoa(Pessoa pessoa) {
  this.pessoa = pessoa;
}
    
17.11.2016 / 23:27
0

Your problem is not in println ! Your employee class contains some errors. You have not set setDatadia() , setDatames() , setDiaAno() . In the main class you forgot to set properties of data .

Main class:

package principal;


public class Principal {


public static void main(String[] args) {

    funcionario lucas = new funcionario();
    lucas.setSalario(1856.85);
    lucas.setEndereco("Rua Frei Caneca");
    lucas.setEstadoCivil("Solteiro");
    lucas.setNomeDoDepartamento("Auxiliar");

   lucas.pessoa = new funcionario();
    lucas.pessoa.setNome("Lucas Alves Cardoso de Jesus");
    lucas.pessoa.setRg(123456891);

    lucas.data = new funcionario();
    lucas.data.setDataDia(13);
    lucas.data.setDataMes(05);
    lucas.data.setDiaAno(94);

    lucas.getAnual();

    System.out.println(lucas.getEndereco());


}

}

Official Class:

package principal;


public class funcionario {

    private String NomeDoDepartamento;
    private double Salario;
    private double anual;
    private String EstadoCivil;
    private String Endereco;
    private String nome;
    private int rg;
    int proximo = 0;
    private int dataDia;
    private int dataMes;
    private int  diaAno;

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setRg(int rg) {
        this.rg = rg;
    }

    public void setDataDia(int dataDia) {
        this.dataDia = dataDia;
    }

    public void setDataMes(int dataMes) {
        this.dataMes = dataMes;
    }

    public void setDiaAno(int diaAno) {
        this.diaAno = diaAno;
    }
    funcionario pessoa;
    funcionario data;


    //get obter set mudar

    public String getNomeDoDepartamento(){
        return this.NomeDoDepartamento;
    }

    public void setNomeDoDepartamento(String nomedepartamento){
        this.NomeDoDepartamento = nomedepartamento;
    }

    public double getSalario(){
        return this.Salario;
    }

    public void setSalario (double salario){
        this.Salario = salario;
    }

    public double getAnual(){
        return this.Salario*12;
    }

    public String getEstadoCivil(){
        return this.EstadoCivil;
    }

    public void setEstadoCivil(String estadocivil){
        this.EstadoCivil = estadocivil;
    }

    public String getEndereco(){
        return this.Endereco;
    }

    public void setEndereco (String endereco){
        this.Endereco = endereco;
    }


}
    
18.11.2016 / 03:00