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

Operações com Array

//Não tem jeito desse código rodar:

class Empresa{
    String nome;
    String cnpj;
    Funcionario funcionario[] = new Funcionario[4];

    Empresa (String nome, String cnpj, Funcionario[] func){
        this.nome = nome;
        this.cnpj = cnpj;
        this.funcionario = func;
    }

    void adiciona(Funcionario funcionario){
        for (int i = 0; i <= funcionario[].length; i++){
            if (funcionario[i] == null)
                funcionario[i] = funcionario;
            continue;
        }
    }
}
4 respostas

Oi Fernanda, tudo bom?

De qual código estamos falando, exatamente? No exercicio econtrei dois:

void mostraEmpregados() {
    for (int i = 0; i < this.livre; i++) {
        System.out.println("Funcionário na posição: " + i);
        System.out.println("R$" + this.empregados[i].salario);
    }
}

e

class TestaEmpresa {

    public static void main (String[] args) {
        // criação dos funcionários...

        // empresa.empregados[0].mostra();
        // empresa.empregados[1].mostra();

        empresa.mostraEmpregados();
    }
}

Qual problema, exatamente, aconteceu?

Aguardo retorno =)

Pra mim funcionando normal. Qual a mensagem de erro?

Não consigo colocar aqui o código formatado e endentado, sempre sai sem formatação nenhuma!!!

Quando compilo, o sistema mostra a mensagem:

Empresa.java:13: error: class expected -
    for (int i = 0; i <= funcionario[].length; i++){

e mostra um marcador embaixo da letra "l" da palavra "length".

solução!

Para compartilhar código aqui no forum, você pode adicionalo entre dois trios de crases ```. Alterei seu post caso você quera ver um exemplo =)

No canto esquerdo superior da caixa de texto de respostas também temos o botão inserir código que ja traz isso pronto pra gente.

Quanto so código, acredito que seja só um probleminha de sintaxe mesmo que eu deixei passar. Aqui:

funcionario[].length

Acredito que estamos querendo nos referenciar ao array funcionario da classe empresa:

    // aqui a declaração dos [] fica na frente do tipo para indicarmos que queremos um array daquele tipo
    Funcionario funcionario[] = new Funcionario[4];
    // o correto seria
    Funcionario[] funcionario = new Funcionario[4];

Porém também estamos recebendo uma variavel chamada funcionario como parametro no método adiciona:

    void adiciona(Funcionario funcionario)

Como os dois tem o mesmo nome a gente pode diferenciar o atributo da classe pela palavr this. Algo como:

    // aqui não precisamos dos [] pois queremos apenas acessar o atributo funcionario =)
        for (int i = 0; i <= this.funcionario.length; i++)

Uma outra forma de evitar a confusão dos nomes é dar nomes diferentes para eles. No caso, acredito que o atributo que contem o array de Funcionario, poderia se chamar funcionarios:

    Funcionario[] funcionarios = new Funcionario[4];

Assim, podemos utilizar no nosso método adiciona a palavra funcionarios, evitando o conflito:

class Empresa{
    String nome;
    String cnpj;
    Funcionario[] funcionarios = new Funcionario[4];

    Empresa (String nome, String cnpj, Funcionario[] func){
        this.nome = nome;
        this.cnpj = cnpj;
        this.funcionarios = func;
    }

    void adiciona(Funcionario funcionario){
        for (int i = 0; i <= funcionarios.length; i++){
            if (funcionarios[i] == null)
                funcionarios[i] = funcionario;
            continue;
        }
    }
}