Ir ao conteúdo
  • Cadastre-se

Java o novo for do java 5.0


Posts recomendados

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

 

Link para o comentário
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);
        }
    }

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...