Eduardo Vieira Eduardo Vieira - 3 months ago 6
Java Question

Java: how to use an object from another class

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)

Thanks for your help

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

}

}

Answer

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().

Comments