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

Primeiros passos java

Se alguém puder me ajuda, estou com um dúvida no cap. 4 Arrays.

No curso pede pra executar esse metodo

this.empregados[i].mostra();

porem no metodo "mostra()" de Funcionario ele espera receber 3 valores inteiros:

void mostra(int dia, int mes, int ano){

Então quando tento compilar da pau

Segue a class Funcionario e a class Empresa

class Funcionario {

    String nome = null;
    String departamento = null;
    double salario = 0;
    String rg = null;

    Data dataDeEntrada;

    boolean temAumento = false;
    double aumento;

    void recebeAumento (double aumento){
        this.salario += aumento;
        this.aumento = aumento;
        this.temAumento = true;
    }

    void ganhoAnual() {
        double valorAnual;
        valorAnual = this.salario * 12;
        System.out.println ("\n\nSeu salario anual: R$" + valorAnual);
    }

    void mostra(int dia, int mes, int ano){

        if(this.nome != null){System.out.println("Nome: "+ this.nome);}
        if(this.departamento != null){System.out.println("Departamento: "+ this.departamento);}
        if(this.salario != 0){System.out.println("Salario: R$ "+ this.salario);}
        if(dia > 0 && dia <= 31){
            if (mes > 0 && mes <= 12){
                if (ano > 0 && ano <= 2015){
                    System.out.println("Data de entrada: " + this.dataDeEntrada.getFormatada());
                }
            }
        }
        if(this.rg != null){System.out.println("RG: "+ this.rg);}
        if (temAumento == true){
            System.out.println("Aumento: R$ " + this.aumento);
        }
    }    
}

class Empresa {
    String nome;
    Funcionario[] empregados;
    String cnpj;
    int livre = 0;

    void adiciona(Funcionario f){
        this.empregados[this.livre] = f;
        this.livre++;
    }

    void mostraEmpregados(){
        for (int i = 0; i < this.livre; i++){            
            System.out.println("Funcionario[" + i + "]");
            System.out.println("R$ " + this.empregados[i].salario);
        }
    }

    void mostraTodasInformacoes(){
        for(int i = 0; i < this.livre; i++){
            System.out.println("Funcionario["+ i + "]");
            this.empregados[i].mostra();
        }
    }
}
Segue o erro: method mostra in class Funcionario cannot be applied to given types;
this.empregados[i].mostra();
                  ^
required: int, int, int
found: no arguments
reason: actual and formal argument lists differ in length
1 error
3 respostas
solução!

Leonardo, o método mostra é definido na aula 3, exercício 3.

Ele mostra os dados do funcionário. Acho que você se confundiu.O meu método mostra está assim:

    void mostra(){
        System.out.println("Identificador:         " + getIdentificador());    
        System.out.println("Código:         " + this.codigo);    
        System.out.println("Nome:           " + this.dadosCadastrais.getNome());
        System.out.println("Nascimento:     " + this.dadosCadastrais.dataNascimento.converteData());
        System.out.println("CPF:            " + this.dadosCadastrais.cpf);
        System.out.println("Salario:        " + this.salario);
        System.out.println("Departamento:   " + getDepartamento());
        System.out.println("Admissao:       " + this.dataAdmissao.converteData());
        System.out.println("Demissao:       " + this.dataDemissao.converteData());
        System.out.println("Ganho Anual antes reaj.." +  this.calculaGanhoAnual());

Dá uma olhadinha na aula 3>

Não vi em lugar algum o método mostra tendo 3 argumentos inteiros.

O Problema acontece quando você chama o método mostra() , pois pra utilizar ele você tem que passar três argumentos inteiros , por exemplo : x.mostra(10,10,2015) . Bom é isso que esta dizendo no erro apresentado no seu console. OBSERVAÇÃO verifique corretamente o que o exercício esta pedindo , pois eu não me recordo de fazer um exercício assim .... Pois você esta passando para um método que exibe as informações (no caso o método mostra()) fazer uma logica de validação de datas .... Uma dica separa essa validação de datas do método mostra() e depois dentro do método mostra você só faz a chamada dele(método que já traz a data validada) para apresentar todas esses System.out.println...

Obrigado, Sidnei e Diego pela ajuda. Realmente está errado! Eu coloquei o método mostra(), pra receber esses valores por conta própria E eu acabei achando que tinha sido solicitado pelo exercício.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software