Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Zeus_Cajazeiras

Java o novo for do java 5.0

Recommended Posts

Bom tarde a todos estou estudando a apostila FJ-11 Java e Orientação a Objetos da Caelum na pagina 73 exercício 4 alterar o laço para o novo for do Java 5.0, até o momento não consegui ter sucesso na chamada do método. segue toda a estrutura que estou desenvolvendo para resolver o exercício.

Estou com problemas para chamar o método ---> mostraempregados() da class Empresa a partir da class TestaEmpresa ---> empresa.mostraEmpregados(empresa.empregados[])

Alguem pode me ajudar a consertar este código

 

class Empresa {
    
    String nome;
    String cnpj;
    Funcionario[] empregados;
    int a;
    void adiciona(Funcionario f) {
        a += 1;
        this.empregados[a - 1] = f;
    }
// este metodo funciona normal
/*    void mostraEmpregados() {
        for (int i = 0; i < this.empregados.length; i++) {
            System.out.println("Funcionário na posição: " + i);
            //System.out.println("Salario: " + this.empregados.salario);
            empregados.mostra();
        }
    }
*/

// porque o metodo não consigo converter o metodo acima para
// o novo for do java 5.0
    void mostraEmpregados(int[] empregados) {
        for (int x : empregados) {
            System.out.println(empregados[x]);
        }
    }

}

class TestaEmpresa {
    public static void main(String[] args) {
    
        Empresa empresa = new Empresa();
        empresa.empregados = new Funcionario[10];
        for (int i = 0; i < 10; i++)  {
            Funcionario f = new Funcionario();
            f.salario = 1000 + i * 100;
            f.contrata();
            empresa.adiciona(f);
        }
// qual argumento devo passar aqui para solucionar o erro
        empresa.mostraEmpregados(empresa.empregados[]);
 
    }
}


class Funcionario {
    
    String nome;
    Data dataNascimento;
    String cpf;
    String rg;
    Data dataAdimicao;
    String departamento;
    String cargo;
    double salario;
    char estaAtivo;
    Data dataDemicao;
    
    void recebeAumento(double aumento) {
        salario += aumento;
    }
    
    double calculaGanhoAnual() {
        return this.salario * 12;
    }

    boolean contrata() {
        if (this.estaAtivo != 'S') {
            this.estaAtivo = 'S';
            this.dataAdimicao = new Data();
            this.dataAdimicao.dia = 15;
            this.dataAdimicao.mes = 07;
            this.dataAdimicao.ano = 2016;
            this.departamento = "Elétrica";
            this.cargo = "Téc. Eletroeletrônica I";
            this.salario = 3159.19;
            this.dataDemicao = new Data();
            this.dataDemicao.dia = 0;
            this.dataDemicao.mes = 0;
            this.dataDemicao.ano = 0;
            return true;
        }
        else {
            return false;
        }
    }

    boolean demite() {
        if (this.estaAtivo != 'N') {
            this.estaAtivo = 'N';
            this.dataAdimicao = new Data();
            this.dataAdimicao.dia = 0;
            this.dataAdimicao.mes = 0;
            this.dataAdimicao.ano = 0;
            this.dataDemicao = new Data();
            this.dataDemicao.dia = 16;
            this.dataDemicao.mes = 07;
            this.dataDemicao.ano = 2016;
            this.departamento = "";
            this.cargo = "";
            this.salario = 0.0;
            return true;
        }
        else {
            return false;
        }
    }

    boolean transfFuncDepar() {
        if (this.estaAtivo == 'S' && this.departamento !="Mecânico") {
            this.departamento = "Mecânico";
            return true;
        }
        else {
            return false;
        }
    }

    void mostra() {
        System.out.println("Nome: " + this.nome);
        System.out.println("Departamento: " + this.departamento);
        System.out.println("Salário: " + this.salario);
        System.out.println("RG: " + this.rg);
        System.out.println("Ganho Anual: " + this.calculaGanhoAnual());
        System.out.println("Cargo/Função: " + this.cargo);
        System.out.println("Data de Adimição: " + this.dataAdimicao.formataData());
        System.out.println("Data de Demição: " + this.dataDemicao.formataData());
        

    }
    
}

class Data {

    int dia;
    int mes;
    int ano;
    
    String formataData() {
        return dia + "/" + mes + "/" + ano;
    }
} 

 

Editado por Simon Viegas
Inserir tag CODE no código

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo,

Fiz uma alteração no seu código no método mostraEmpregados() da classe Empresa. Espero ter esclarecido sua dúvida existe um serie de asterisco (******) nos cometarios que fiz. Resumindo você está passando argumentos incompativeis para o metodo. Você está passando um array de Funcionarios e o método está recebendo um array de int.

Espero ter ajudado.

 

   // nessa linha abaixo você esta passando empregados como int[] 
   // e empregados é tipo "Funcionario"   *******
   
   /* void mostraEmpregados(int[] empregados) {
        ----> aqui abaixo é o mesmo problema ******
        for (int x : empregados) {
            System.out.println(empregados[x]);
        }
    }*/

    //---> Aqui foi a alteração que fiz....
    void mostraEmpregados(Funcionario[] empregados) {
        for (Funcionario x : empregados) {
            System.out.println(x);
        }
    }

 

Editado por rokopuq
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×