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

Solução para Método + Array

Galera,

Eu estava pensando em utilizar o exemplo do try/catch na criação de um funcionario no array. Quando não existisse mais posições disponiveis, eu voltaria um erro informando que não existe mais "vagas em aberto". Porem estou tomando uma surra para incluir a criação das posições dentro do array. Basicamente eu estou chamando pelo código analistas.criadorArray, preenchendo as informações:

        analistas.criadorArray("Roberval Taylor", 2000, 154875451, 19, 8, 1999);
        analistas.criadorArray("Chubaca Silva", 5000, 154875451, 19, 8, 1999);

O meu método esta assim, comentei o for a nível de teste, estou tentando chamar o mesmo método duas vezes, sendo na primeira chamada cria o funcionario na posição 0, na segunda chamada cria na posição 1, e assim sucessivamente.

    public void criadorArray(String nome, int salario, int RG, int dia, int mes, int ano){
        int i = 0;
        //for(int i = 0; i < this.grupo.length;i++){
            if(this.grupo[i].nome != null){
            this.grupo[i].Funcionario(nome, salario, RG, dia, mes, ano);           
            i++;
        //}        
    }

Acredito que eu tenha que ter um código de retorno, armazenando/informando que na posição 0 ja existe o funcionario Fulano. Mas não estou sabendo fazer isso. Alguem poderia me dar uma luz ?

Abraços !!

8 respostas
solução!

Eae Vitor, tudo certo?

Cara, se entendi bem sua duvida, você quer apenas verificar se a posição do seu array já está ocupada para então adicionar o elemento isso?

Utilizando seu código:

  public void criadorArray(String nome, int salario, int RG, int dia, int mes, int ano){
        int i = 0;
        for(int i = 0; i < this.grupo.length - 1; i++){
            //Verificamos para cada elemento do array se não tem um nome cadastrado
            if(this.grupo[i].nome == null){
                //Se não estiver cadastrado, adicionamos nesta posição     
                break;
            }else{
                //Posição ocupada
            }

        }        
    }

Espero ter ajudado.

Bom dia Victor, acho que sua ideia está ok, percorre o array com o for, verifica se cada elemento está preenchido:

for(int i = 0; i < this.grupo.length;i++){
    if(this.grupo[i].nome == null) {
        this.grupo[i].Funcionario(nome, salario, RG, dia, mes, ano);
    } else {
        // Array está preenchido
    }
 }

Então amigos, a minha ideia é rodar a criação do funcionario 2x.

        analistas.criadorArray("Roberval Taylor", 2000, 154875451, 19, 8, 1999);
        analistas.criadorArray("Chubaca Silva", 5000, 154875451, 19, 8, 1999);

Sendo que desta forma, a segunda vez que eu rodo o comando, ele substitui o funcionario criado na primeira chamada. Eu gostaria de ir armazenando no array cada novo funcionario criado.

Basicamente, chamo o criadorArray, dentro dele ele verifica se existe funcionario criado na posição 0, se nao tiver, cria, e armazena esse funcionario, para que na proxima vez que eu chamar o criadorArray, ele crie um funcionario na posicao livre seguinte.

    public void criadorArray(String nome, int salario, int RG, int dia, int mes, int ano){
        for(int i = 0; i < this.grupo.length;i++){
            if(this.grupo[i].nome != null){
                this.grupo[i].Funcionario(nome, salario, RG, dia, mes, ano);           
             }        
    }
    }

Acredito que esteja faltando esse armazenamento sacou.

Acredito que com a logica das respostas acima ira ter o resultado desejado.

Cuidado com está parte:

if(this.grupo[i].nome != null); //Aqui você está terminando o if sem executar nada, atenção para o ";"
this.grupo[i].Funcionario(nome, salario, RG, dia, mes, ano);

Você está adicionando independente da condição, além disso sua condição está verificando se a posição já está ocupada.

Vitor, o if nao termina com ;(ponto e virgula) , ele te { } para colocarmos a instrução dentro ou nada caso só tenhamos uma linha de comando abaixo dele, tente essa alteração por favor

O seu if está ao contrário, ele está falando pra adicionar um funcionario caso ja tenha um funcionário

Vlw galera !! Guilherme vlw !!

    public void createAnalista(String nome, int salario, int RG, int dia, int mes, int ano){
        for(int i = 0; i < this.grupo.length;i++){
            if(this.grupo[i].nome == null){
                    this.grupo[i].Funcionario(nome, salario, RG, dia, mes, ano);  
                break;
            }        
        }    
    }

Show Victor!! Bons estudos!