Reputation: 49
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());
}
}
Upvotes: 1
Views: 79
Reputation: 15842
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();
}
}
Upvotes: 1
Reputation: 3601
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()
.
Upvotes: 1