有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java:如何使用另一个类中的对象

所以,我有三个类: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");打印的数据相同的数据。(位于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());
    }
}

共 (2) 个答案

  1. # 1 楼答案

    你必须在你的f1setDataf1.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();
    
        }
    }
    
  2. # 2 楼答案

    它是null,因为Funcionario尚未设置其数据字符串

    在main TesteFuncionariomain方法中,您需要调用

    f1.setData("value you want");

    这将设置数据的值,然后在getData()中返回该值