4
respostas

Dúvida no funcionamento do array

Boa noite,

Estou com dúvidas no funcionamento do array do ultimo método da classe Empresa. Nele, tive que utilizar uma variável de apoio "i" porque sem ela era impresso isso : "Funcionario@2ef9b8bc" , ao invés do salário. A pergunta é, por que sem essa variável "i", utilizando o código System.out.println(salario), não consigo imprimir os valores do salario ?

Desde já agradeço.

Segue o código completo:

class Funcionario {
    String nome;
    double salario;
}


class Empresa {
    String cnpj;
    String nome;
    Funcionario[] funcionario;

    void mostraEmpresa(){
        System.out.println(this.cnpj+"\n"+this.nome);
    }

    void mostraFuncionarios(){


        for(int i=0; i<funcionario.length;i++){
            if (funcionario[i]==null)continue;
            System.out.println(this.funcionario[i].nome+"\n"+this.funcionario[i].salario);
        }
    }

    void adiciona(Funcionario f){
        int a =funcionario.length;
        for (int i=0;a>i;i++){
            if (funcionario[i]==null){
                funcionario[i]=f;
                break;
            }
        }

        if (funcionario[a-1]!=null && funcionario[a-1]!=f){
            Funcionario[] b=new Funcionario[a+1];
            for(int i=0;i<a;i++){
                b[i]=funcionario[i];
            }
            b[a]=f;
            this.funcionario=b;
            System.out.println(funcionario.length);


        }

    }

    void mostraSalario(){
        int i =0;
        for(Funcionario salario : funcionario){

            if(salario!=null){
                System.out.println(funcionario[i].salario);
                i++;
            }
        }
    }
}
4 respostas

Olá Robson, você esta errando no seu for.

  void mostraSalario(){
        int i =0;       
    **for(Funcionario salario : funcionario){**
               if(salario!=null){
                       System.out.println(funcionario[i].salario);
                       i++;
               }
        }
  }

maneira correta:

    void mostraSalario(){
        int i =0;
        for(Funcionario salario : funcionario){
            if(salario!=null){
                System.out.println(salario.salario);                
            }
        }
    }

OBS: Lembrando que salario é um apelido que você deu para o seu objeto do tipo funcionario.

Link sobre como o foreach funciona: http://www.javaprogressivo.net/2012/09/o-laco-for-para-arrays.html

Boa Guilherme!!!

Obrigado Guilherme !!! Estava com dificuldades para entender o for each.

Só para ver se entendi mesmo, fiz a seguinte modificação:

public void mostraSalario(){
        for(Funcionario x : funcionario){
            if(x!=null){
                System.out.println(x.salario);                
            }
        }
    }

Em cada interação do for o x fará referência a um objeto Funcionário que por sua vez é referênciado em cada posição do Array. Por isso posso referênciar o atributo salário (x.salario) de cada Funcionário, certo ?