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

Dúvida no Ex. 6 da Aula 4 - Arrays

Boa tarde Pessoal.

Meu programa não está chamando o método mostraTodasAsInformacoes e o método contem, se alguém conseguir ajudar agradeço!



public class Funcionario {

    String nome;
    String departamento;
    double salario;
    Data dataEntrada;
    String rg;
    String endereco;

    public double recebeAumento(double aumento ){
        return this.salario += aumento;
    }

    public double calculaGanhoAnual(){
        return this.salario = salario*12;
    }
    public String alteraDepartamento(String novoDepartamento){
        return this.departamento = novoDepartamento;
    }
    public String mudarEndereco(String enderecoNovo){
        return this.endereco = enderecoNovo; 
    }
    void mostra(){
        System.out.println("Nome:" + this.nome);
        System.out.println("Endereco:" + this.endereco);
        System.out.println("RG:" + this.rg);
        System.out.println("Salario:" + this.salario);
        System.out.println("Departamento:" + this.departamento);
        System.out.println("Data:" + this.dataEntrada.dia);
        System.out.println("Mês:" + this.dataEntrada.mes);
        System.out.println("Ano:" + this.dataEntrada.ano);
        System.out.println("");
    }
    }


public class Empresa {

    String nome;
    String cnpj;
    String endereco;
    String telefone;
    Funcionario[] empregado;
    int livre=0;

    public void adiciona (Funcionario f){
        this.empregado[this.livre]=f;
        this.livre++;
    }
    public void mostraFuncionario(){
        for(int i=0; i < this.livre; i++){
            if(empregado == null){
                continue;
            }
            System.out.println("Funcionario na posição: "+ i);
            System.out.println("R$: "+ this.empregado[i].salario);

        }            
        }
    public void    mostraTodasAsInformacoes(){
        for(int i=0; i < this.livre; i++){
            if(empregado[i] == null){
                continue;
            }
            System.out.println("Funcionario na posicao: " + i);
            this.empregado[i].mostra();


        }
    }
        public boolean contem (Funcionario f){
            for(int i=0; i < this.livre; i++){
                if( f== this.empregado[i]){
                    return true;
                }
                }
            return false;
        }
    }




public class TestaEmpresa {

    public static void main(String[] args) {
        Empresa empresa = new Empresa();
        empresa.empregado = new Funcionario[10];


        for (int i = 0; i < 5; i++) {
            Funcionario f = new Funcionario();
            f.salario = 1000 + i * 100;
            empresa.adiciona(f);

        }
        empresa.mostraTodasAsInformacoes();

        empresa.mostraFuncionario();

        empresa.contem(f);
    }

}
6 respostas

Ola, Aline Yasmin !

Fala um ajuste para você testar e entender o que esta acontecendo.

Mudei seu código da classe TestaEmpresa:

Ajuste seu for igual o código abaixo:

for (int i = 0; i < 5; i++) {
            Funcionario f = new Funcionario();
            f.nome = "Teste de Nome....";
            f.endereco = "RUA Teste ....";
            f.departamento = "Departamento teste...";
            f.salario = 1000 + i * 100;
            empresa.adiciona(f);
            empresa.contem(f);
        }
        empresa.mostraTodasAsInformacoes();
        empresa.mostraFuncionario();

1º - Note que estamos passando o nome, endereco, departamento, etc... todos os campos que desejar informar para sua classe.

2º - Essa linha:

empresa.contem(f);

Precisa estar dentro do seu for porque o seu Funcionario f = new Funcionario(); f só existe dentro do for, por isso precisa chamar o metodo empresa.contem(f); dentro do for.

Ajudei ?

Abraço!

Boa tarde Cristiano, tudo bem?

Obrigada pelo retorno.

Vamos lá, eu coloquei o método contém dentro do for, mas ele não me responde se é true ou false , dentro do for coloquei a seguinte condição "f.salario = 1000 + i * 100;" ele teria que me devolver outras posições do Array somente com o salário e com o restante das opções nulas caso eu não insira, mas ele só me devolve a primeira posição.

for (int i = 0; i < 5; i++) {

Funcionario f = new Funcionario();

f.nome="Aline";

f.endereco="Rua Teste";

f.departamento= "TI";

f.salario = 1000 + i * 100;

empresa.adiciona(f);

empresa.contem(f); } empresa.mostraTodasAsInformacoes(); } }

Está dando o seguinte erro:

Funcionario na posicao: 0

Nome:Aline

Endereco:Rua Teste

RG:null

Salario:1000.0

Departamento:TI

Exception in thread "main" java.lang.NullPointerException at br.com.aline.funcionario.dados.Funcionario.mostra(Funcionario.java:30) at br.com.aline.funcionario.dados.Empresa.mostraTodasAsInformacoes(Empresa.java:33) at br.com.aline.funcionario.dados.TestaEmpresa.main(TestaEmpresa.java:31)

solução!

Oi, Aline !

No seu for inicialize sua data.

Exemplo:

for (int i = 0; i < 5; i++) {
    Funcionario f = new Funcionario();

    f.data = new Data();

    f.salario = 1000 + i * 100;
    empresa.adiciona(f);
    empresa.contem(f);
    }

Funcionou direitinho agora ?

Abraço!

Olá Cristiano!

Agora rodou certinho, muito obrigada pela ajuda!!

Abraços!

Oi, Aline !

Muito Bom, utilize sem moderação o fórum para tirar suas dúvidas!

Abraço!

Obrigada!!! :)