简体   繁体   中英

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)

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

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

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

    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM