1

So, I have three classes: TesteFuncionario, Funcionario and Data. What I want to do is call a method from Funcionario

f1.imprimirFuncionario();

This method prints the information about f1

public void imprimirFuncionario(){
    System.out.println("Nome: "+nome);
    System.out.println("Departamento: "+departamento);
    System.out.println("Salario: "+salario);
    System.out.println("RG: "+rg);        
    System.out.println("Data de admissão: "+getData());
}

However, the last line, System.out.println("Data de admissão: "+getData()); returns null.

I want this line to print the same data that System.out.print("Data de admissão: "+tempDataAtual+"\n"); prints. (This is located in the TesteFuncionario class)

public class TesteFuncionario {

    public static void main(String[] Args) {

        Funcionario f1 = new Funcionario();

        Scanner input = new Scanner(System.in);

        System.out.println("Digite o nome: ");

        String tempNome = input.nextLine();
        f1.setNome(tempNome);


        System.out.println("Digite o RG: ");

        int tempRg = input.nextInt();
        f1.setRg(tempRg);


        System.out.println("Digite o departamento: ");

        String tempDepartamento = input.next();
        f1.setDepartamento (tempDepartamento);


        System.out.println("Digite o salario: ");

        double tempSalario = input.nextDouble();
        f1.setSalario (tempSalario);


        int diaTemp, mesTemp, anoTemp;

        System.out.println("Informe a data de admissão (dd mm aaaa): ");

        diaTemp = input.nextInt();
        mesTemp = input.nextInt();
        anoTemp = input.nextInt();

        Data dataAtual = new Data(diaTemp, mesTemp, anoTemp);


        String tempDataAtual = dataAtual.getData();

        System.out.println("\n *** Antes do aumento ***\n");

        System.out.print("Ganho Anual: ");
        System.out.println(f1.calculaGanhoAnual());
        System.out.print("Data de admissão: "+tempDataAtual+"\n");
        f1.imprimirFuncionario();

        System.out.println("\n *** Depois do aumento ***\n");

        f1.receberAumento(20);

        System.out.print("Ganho Anual: ");
        System.out.println(f1.calculaGanhoAnual());
        System.out.print("Data de admissão: "+tempDataAtual+"\n");
        f1.imprimirFuncionario();
    }
}

public class Data {

    private int dia, mes, ano;

     public Data(int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }

    public void setDia(int dia){
        this.dia = dia;
    }

    public int getDia(){
        return dia;
    }

    public void setMes(int mes){
        this.mes = mes;
    }

    public int getMes(){
        return mes;
    }

    public void setAno(int ano){
        this.ano = ano;
    }

    public int getAno(){
        return ano;
    }

    public void setData(int dia, int mes, int ano){
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }
    public String getData (){
        return dia + "/" + mes + "/" + ano;
    }

    public void imprimirData(){
        System.out.println("Data: "+dia+"/"+mes+"/"+ano);
    }
}

public class Funcionario {

    private String nome, departamento, data;
    private double salario;
    private int rg;

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

    public String getNome (){
        return nome;
    } 

    public void setDepartamento(String departamento){
        this.departamento = departamento;
    }

    public String getDepartamento(){
        return departamento;
    }

    public void setData (String data){
        this.data = data;
    }

    public String getData(){
        return data;
    }

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

    public double getSalario (){
        return salario;
    }

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

    public int getRg(){
        return rg;
    }

    public void receberAumento(int porcentagem){
        salario = salario + salario*porcentagem/100;
    }

    public double calculaGanhoAnual(){
        return salario*12;
    }

    public void imprimirFuncionario(){
        System.out.println("Nome: "+nome);
        System.out.println("Departamento: "+departamento);
        System.out.println("Salario: "+salario);
        System.out.println("RG: "+rg);        
        System.out.println("Data de admissão: "+getData());
    }
}

2 Answers 2

1

It is null because Funcionario has not had its data String set.

In the main method of main TesteFuncionario you will need to call.

f1.setData("value you want");

This sets the value of data which is then returned in getData().

Sign up to request clarification or add additional context in comments.

Comments

1

You have to setData on your f1. f1.setData(tempDataAtual);

public class TesteFuncionario {

    public static void main(String[] Args) {

        Funcionario f1 = new Funcionario();

        Scanner input = new Scanner(System.in);

        System.out.println("Digite o nome: ");

        String tempNome = input.nextLine();
        f1.setNome(tempNome);


        System.out.println("Digite o RG: ");

        int tempRg = input.nextInt();
        f1.setRg(tempRg);


        System.out.println("Digite o departamento: ");

        String tempDepartamento = input.next();
        f1.setDepartamento (tempDepartamento);


        System.out.println("Digite o salario: ");

        double tempSalario = input.nextDouble();
        f1.setSalario (tempSalario);


        int diaTemp, mesTemp, anoTemp;

        System.out.println("Informe a data de admissão (dd mm aaaa): ");

        diaTemp = input.nextInt();
        mesTemp = input.nextInt();
        anoTemp = input.nextInt();

        Data dataAtual = new Data(diaTemp, mesTemp, anoTemp);


        String tempDataAtual = dataAtual.getData();
        f1.setData(tempDataAtual);
        System.out.println("\n *** Antes do aumento ***\n");

        System.out.print("Ganho Anual: ");
        System.out.println(f1.calculaGanhoAnual());
        System.out.print("Data de admissão: "+tempDataAtual+"\n");
        f1.imprimirFuncionario();

        System.out.println("\n *** Depois do aumento ***\n");

        f1.receberAumento(20);

        System.out.print("Ganho Anual: ");
        System.out.println(f1.calculaGanhoAnual());
        System.out.print("Data de admissão: "+tempDataAtual+"\n");
        f1.imprimirFuncionario();

    }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.