Bom dia pessoal estou aqui de novo usando e abusando do forum rs, bom é assim estou fazendo o seguinte exercicio do Caalum “Crie os getters e setters da sua classe Empresa e coloque seus atributos como private. Lembrese de que não necessariamente todos os atributos devem ter getters e setters.”. Bom comecei a fazer o exercicio mas estou me deparando em um erro num metodo boolean desta classe o seguinte erro é apresentado para mim “Cannot invoke equals(void) on the primitive type void”. nestá linha:
Funcionario[]empregados;publicbooleancontem(Funcionariof,Stringnome,Stringcnpj){if(f==null){returnfalse;}for(inti=0;i<=this.empregados.length;i++){if(this.empregados[i]!=null){if(f.setNome(nome).equals(this.empregados[i].setNome(nome)){System.out.println("Funcionario "+f.Nome+" já trabalha nesta empresa");returntrue;}}else{System.out.println("O Funcionário "+f.Nome+" não trabalha conosco");returnfalse;}}System.out.println("O Funcionário "+f.Nome+" não trabalha conosco");returnfalse;}
O problema é que tu tá usando o método set na comparação, o Java tá entendo que tu está escrevendo no atributo daí dentro do equals ele não está recebendo valor e ficando nullo.
Sem ver seu código mas eu imagino que o método setNome() é usado para alterar o valor do atributo na classe funcionário, logo deve existir um método getNome() que é para recuperar e vai trazer um dado do tipo String. Se eu estiver correto no seu caso ele vai reclamar porque não tá comparando nenhum valor já que o método setNome() não tem retorno de nada e é do tipo void.
Abraço.
C
CLAJMCARDOSO
Ptz é isso mesmo estou confundindo um puco quando devo usar o gett ou setter vou estudar mais a respeito
C
CLAJMCARDOSO
Agora e veio outra duvida em cima desse exercício na classe TestaEmpresa como devo fazer a chamada para a criação do array veja como estou fazendo;
emp.empregados=newFuncionario[10];emp.empregados[0]=newFuncionario("Claudio Jose",data,"Gerente",2000);emp.empregados[1]=newFuncionario("Debora Barcelete",data,"Auxiliar de limpeza",900);emp.empregados[2]=newFuncionario("Bianca Lima Cardoso",data,"Auxiliar de manutenção",800);emp.empregados[3]=newFuncionario("Thais Cardoso Lima",data,"Auxiliar de serviços Gerais",800);for(inti=0;i<emp.empregados.length;i++){emp.adiciona(emp.empregados[i]);}
Esta dando erro no array “The field Empresa.empregados is not visible”
Até onde sei esse erro é porque o atributo não está acessível, ou seja, está como private e isso é correto. Você deveria usar os getters/setters para manipular eles.
Usuando ArrayList() ficaria algo assim:
// Inicia o array com o retorno para classe de Funcionario()
List funcList = new ArrayList();
// Inicia o objeto
Funcionario func = new Funcionario(“Claudio Jose”, data, “Gerente”, 2000); // Objeto de funcionário
funcList.add(func); // Adiciona para a lista o novo funcionário
Dá uma lida sobre as coleções em Java que vai te ajudar a resolver essa questão.
Abraço.
C
CLAJMCARDOSO
isso mesmo perfeito agora funcionou coloquei a criação do array como public.
Para zerar o exercício estou com um probleminha no método contem ele verifica se o funcionario está cadastrado ou não e informa a mensagem ele só aparece que não está cadastrado veja a classe.
publicFuncionario[]empregados;publicbooleancontem(Funcionariof,Stringnome){if(f==null){returnfalse;}for(inti=0;i<=this.empregados.length;i++){if(this.empregados[i]!=null){if(f.getNome().equals(this.empregados[i].getNome())){System.out.println("Funcionario "+f.getNome()+" já trabalha nesta empresa");returntrue;}}else{System.out.println("O Funcionário "+f.getNome()+" não trabalha conosco");returnfalse;}}System.out.println("O Funcionário "+f.getNome()+" não trabalha conosco");returnfalse;}
J
Jonathan_Medeiros1 like
Tente utilizar o código conforme abaixo:
C
CLAJMCARDOSO
não funcionou continua aparecendo só funcionario não cadastrado