Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

O resultado foi diferente ao chamar metodo mostra() sem passar argumentos pra data

Fiz algo de errado?

class Funcionario {
    String nome;
    String departamento;
    double salario;
    String rg;
    double salarioAnual;
    // Data dataEntrada;

    void receberAumento( double aumento){
        this.salario += aumento;
    }

    double ganhoAnual(){
        return this.salario * 12;
    }

    Data dataDeEntrada = new Data();

    void mostra(){
        System.out.println("Nome:" + this.nome);
        System.out.println("Departamento:" + this.departamento);
        System.out.println("RG:" + this.rg);
        System.out.println("Salario: R$" + this.salario);
        System.out.println("Ganho anual: R$" + this.ganhoAnual());
        System.out.println("Entrada:" + this.dataDeEntrada.dia + "/" + this.dataDeEntrada.mes + "/" + this.dataDeEntrada.ano);
        System.out.println(" ");
    }
}

class Data {
    int dia;
    int mes;
    int ano;

    void preencheData (int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }
}

class Dados{
    public static void main(String[]args){

        // Pedro
        Funcionario pedro = new Funcionario();
        pedro.nome = "Pedro Silva";
        pedro.salario = 9000.0;
        pedro.rg = "04755060";
        pedro.departamento = "TI";


        pedro.dataDeEntrada.preencheData();
        pedro.mostra();

    }
}

Eu rodei assim, e o resultado não foi 0/0/0... e sim um erro:

funcionario.java:53: error: method preencheData in class Data cannot be applied to given types; pedro.dataDeEntrada.preencheData(); ^ required: int,int,int found: no arguments reason: actual and formal argument lists differ in length 1 error

O que está errado?

3 respostas

faltou montar esse objeto: Data com int dia; int mes; int ano;

solução!

Então Paolo,

No comportamento (método) da classe DATA, você criou um construtor no momento que você declarou a mesma:

void preencheData (int dia, int mes, int ano)

No trecho em negrito você está dizendo ao Java que esse método será invocado apenas se você passar os parâmetros necessários para sua construção (construtor).

Consegui te ajudar? Abs

Boa! Valeu pessoal!