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

Usando FOR

Esta forma usando o FOR é igual ao do exercicio?

No lugar de declarar " int livre = 0;" o for declara "int i = 0" eu notei que há incrementação também no "livre++" que acho que é a mesma que ocorre no "i++", mas estou em duvida ainda.

void adicionar(Funcionario f){
        for (int i=0; i < funcionarios.length; i++){
            this.funcionarios[i] = f; 
        }
    }
7 respostas

Deu o seguinte erro:



...\ProgJava>javac funcionario.java
funcionario.java:57: error: non-static method adicionar(Funcionario) cannot be r
eferenced from a static context
                Empresa.adicionar(f1);
                       ^
1 error
solução!

O erro diz que você está tentando chamar um método como se fosse estático [Empresa.adicionar(f1)]. Você pode fazer duas coisas: 1- Tornar o método adicionar estático, desta forma:

public static void adicionar(Funcionario f){

2- Na classe funcionário, criar uma instância e depois chamar o método adicionar.

Ficaria algo assim:

Empresa empresa = new Empresa();
empresa.adicionar(f1);

Testa aí e qualquer coisa posta o seu arquivo funcionário aqui :)

Bruno, coloca teu código. Acho que tu esqueceu de referênciar alguém.

A solução é a primeira Henrique, realmente eu esqueci de instanciar a empresa e chamar o método adicionar pela variavel criada, agora funcionou. Obrigado pela ajuda dos dois!

Vejo ainda a necessidade de um if para testar se a posição no array já está ocupada.

class Empresa {

    String nome;
    String cnpj;
    Funcionario[] funcionarios = new Funcionario[10];

    void adicionar(Funcionario func){

        for(int i=0;i<this.funcionarios.length;i++){

            if (this.funcionarios[i]==null){

                this.funcionarios[i] = func;
                System.out.println(this.funcionarios[i].nome + " Salvo com sucesso");
                break;

            }
        }
    }
}

Concordo com Jorge Henrique, eu fiz da mesma forma.

Amigos,

Por que no código acima não imprime registro salvo com sucesso?

Como faço para ver as posições ocupadas no array?

Grato...