簡體   English   中英

Java:如何使用另一個類中的對象

[英]Java: how to use an object from another class

因此,我有三個類: TesteFuncionarioFuncionarioData 我想做的是從Funcionario調用方法

f1.imprimirFuncionario();

此方法打印有關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());
}

但是,最后一行System.out.println("Data de admissão: "+getData()); 返回null

我希望此行打印與System.out.print("Data de admissão: "+tempDataAtual+"\\n");相同的數據System.out.print("Data de admissão: "+tempDataAtual+"\\n"); 打印。 (這位於TesteFuncionario類中)

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

它為null因為Funcionario尚未設置其數據字符串。

在主要TesteFuncionariomain方法中,您將需要調用。

f1.setData("value you want");

這將設置數據的值,然后將其返回到getData()

您必須在f1上設置setData 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();

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM