public class TestaEmpresa {
public static void main (String[] args){
Empresa empresa = new Empresa();
empresa.empregados = new Funcionario[5];
for (int i = 0; i < empresa.empregados.length; i++) {
Funcionario f = new Funcionario();
f.salario = 1000 + i * 100;
//if temporario para testar o metodo contem
if (i == 0)
f.rg="456456";
else
f.rg="777";
empresa.adiciona(f);
}
// Como utilizo o metodo abaixo?
//essa hora vc precisa ter um outro objeto de Funcionario instanciado para pesquisar ....tente assim
Funcionario testeFunc = new Funcionario();
testeFunc.setRg("12345")// ou testeFunc.rg = "12345";
sysout(empresa.contem(testeFunc));
}
}
tente deixar o contem assim:
boolean contem(Funcionario f){
boolean flag = false;
for (int i=0; i<this.controlador; i++){
if (this.empregados[i].rg.equals(f.rg)) // Não sei se esse codigo ta certo!
flag = true;
}
return flag;
}
e acho que o controlador estático fica meio estranho… você pode ter problemas se tiver mais de uma empresa.
edit: se decidir que quer deixar o controlador como estático… remova o ‘this’ no controlador dentro do for…
frostbyte…
Você está utilizando alguma IDE para desenvolver suas aplicações?
Elas te ajudam a identificar e corrigir erros básicos como de escopo de classe e chamada de métodos que as vezes passam despercebidos…
o problema é que quando ele está adicionando o f, ele logo depois chama o contem(), que corre o array todo pela sua propriedade length… que no caso é 5
então no momento ele está assim: array[f, null, null, null, null]
na hora em que ele testa o rg com o primeiro dado do array nenhum problema o corre… agora quando ele pergunta o rg do segundo dado que é um null… lança uma NullPointerException… por isso achei melhor ele usar o controlador… que quando adiciona 1 dado… vale 1… então testa o contem() em apenas um registro… e esse problema ja não ocorre mais
[quote]Exception in thread “main” java.lang.NullPointerException
at Empresa.contem(Empresa.java:35)
at TestaEmpresa.main(TestaEmpresa.java:26)[/quote]
Continua dando esse erro.
[quote]frostbyte…
Você está utilizando alguma IDE para desenvolver suas aplicações?
Elas te ajudam a identificar e corrigir erros básicos como de escopo de classe e chamada de métodos que as vezes passam despercebidos…[/quote]
Resposta: Eclipse
[quote]tente deixar o contem assim:
boolean contem(Funcionario f){
boolean flag = false;
for (int i=0; i<this.controlador; i++){
if (this.empregados[i].rg.equals(f.rg)) // Não sei se esse codigo ta certo!
flag = true;
}
return flag;
}
e acho que o controlador estático fica meio estranho… você pode ter problemas se tiver mais de uma empresa.
edit: se decidir que quer deixar o controlador como estático… remova o ‘this’ no controlador dentro do for…[/quote]
Feito!
Funcionario testeFunc = new Funcionario();
testeFunc.setRg("12345")// ou testeFunc.rg = "12345";
sysout(empresa.contem(testeFunc));
Feitp
eu acabei de testar aqui… removendo o static de controlador… e trocando o ‘empregados.length’ por ‘this.controlador’
e rodou certinho…
Resultado:
[quote]contem funcionario
contem funcionario
contem funcionario
contem funcionario
contem funcionario
Funcionario: 456456
Funcionario: 777
Funcionario: 777
Funcionario: 777
Funcionario: 777
true
[/quote]
Pessoal, muitissimo obrigado pela sua ajuda e paciência!
Vocês foram de muita ajuda!
Eu devo colocar as classes aqui ? Não sei como é a regra do fórum…
Só coloque como resolvido no assunto do seu primeiro post!
Abraços!