Exception in thread "main" java.lang.NullPointerException

Pessoal tenho um problema grande aqui :P…

faço um for para cadastrar a pessoa… e depois com um metodo verifico se ela está ou não ná empresa…

ai apareçe isso: exception in thread “main” java.lang.NullPointerException…

acredito que porque ele está apontando para o próximo ponteiro e ele está NULO…

ja coloquei this.funcionario.length - 1; mais nao da certo…

alguem pode me ajudar…

att…

[quote=winde3]Pessoal tenho um problema grande aqui :P…

faço um for para cadastrar a pessoa… e depois com um metodo verifico se ela está ou não ná empresa…

ai apareçe isso: exception in thread “main” java.lang.NullPointerException…

acredito que porque ele está apontando para o próximo ponteiro e ele está NULO…

ja coloquei this.funcionario.length - 1; mais nao da certo…

alguem pode me ajudar…

att…

[/quote]
posta o código.

Posta teu código, fica mais fácil para ajudar.

Abraços!

public class PrincipalFuncionarios {

public static void main(String args[]) {

    Empresa empresa = new Empresa();
    
    Funcionarios[] funcionario = new Funcionarios[10];
    empresa.cnpj = "123";
    empresa.nome = "teste";
    for (int i = 0; i < 3; i++) {
        Funcionarios f1 = new Funcionarios();
        f1.setNome(JOptionPane.showInputDialog("Informe seu nome: "));
        String a;
        a = JOptionPane.showInputDialog("Informe se o funcionário está na empresa ( true / false ): ");
        boolean s = Boolean.parseBoolean(a);
        f1.setStatus(s);
        empresa.adiciona(f1);   
    }
    Funcionarios f1 = new Funcionarios();
    f1.setNome(JOptionPane.showInputDialog("Informe o nome da pessoa que deseja saber se está na empresa: "));
    System.out.println(f1.getNome());
    empresa.contem(f1);

lembrando que esse metodo abaixo fica em outra classe!

public boolean contem(Funcionarios f) {
for (int i = 0; i <= this.funcionario.length; i++) {
if (this.funcionario[i].getNome().equals(f.getNome())) {
if (this.funcionario[i].getStatus() == true) {
s = true;
System.out.println(“Funcionário encontra-se na empresa”);
} else {
s = false;
System.out.println(“Funcionário não encontra-se nessa empresa!”);
}
System.out.println(“O funcionário está na empresa!”);
break;
} else if (i == 2) {
System.out.println(“O funcionário NAO faz parte dessa empresa!”);
}
}
return s;
}

bom acho q e pq ele ta fazendo o for em variaveis nulas entao faz seguinte tira o igual so pra ver

for (int i = 0; i < this.funcionario.length; i++) { 

se nao der tenta colocar so tres e fazer assim pra ver

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

se nao der ainda volta ao original e faz um degub assim depois do For

System.out.println("O FOR "+i+" TEM SEGUINTE USUARIO "+this.funcionario[i].getNome());
se algum deles retornar

"O FOR 4 TEM O SEGUINTE USUARIO null" 

entao ele ta contando de mais

ambuzr deu certo da maneira i < 3…

mais e quando eu quizer percorrer a minha array? porque vai ter situações que eu não vou saber o tamanho do registro que tenho e ai?

tem alguma ideia… mais colocando da 2 maneira que você falou deu certo…

vlw…

no aguardo…

att…

tu tentou assim ?

for (int i = 0; i < this.funcionario.length; i++) {

dessa forma ele faz certo independente do tanto de array existentes

se deu erro de novo entao coloca isso depois do for antes do ifs

System.out.println("O FOR "+i+" TEM SEGUINTE USUARIO "+this.funcionario[i].getNome());  

e posta q ele exibiu so pra ver quantas vezes ele ta fazendo o i ai da pra saber melhor

Exception in thread “main” java.lang.NullPointerException
at funcionarios.Empresa.contem(Empresa.java:31)
at funcionarios.PrincipalFuncionarios.main(PrincipalFuncionarios.java:52)
O for 0tem o seguintes usuarios: 1
O for 1tem o seguintes usuarios: 2
O funcionário NAO faz parte dessa empresa!
O for 2tem o seguintes usuarios: 3

tentei da maneira que vc falou… e ele ta exibindo 3 vezes…

bom sequinte eu acho q ja sei o problema, quando vc faz isso

this.funcionario.length

ele conta quantas arrays foi feitas ?

vamos tirar as duvida, coloca

antes do for

System.out.println("Foram feitas "+this.funcionario.length+" Arrays");

posta o resultado

Exception in thread “main” java.lang.NullPointerException
at funcionarios.Empresa.contem(Empresa.java:32)
at funcionarios.PrincipalFuncionarios.main(PrincipalFuncionarios.java:52)
4
Ja foram feiras 10arrays
O for 0tem o seguintes usuarios: 1
O for 1tem o seguintes usuarios: 2
O funcionário NAO faz parte dessa empresa!
O for 2tem o seguintes usuarios: 3

acho que ta explicado neh… mais qual a solucão… porque meu funcionario é [10]… só que eu criei so 3 pow… como eu anulo o resto?

ambuzr deixa eu explicar melhor…

minha array é de [10]… porem eu so cadastrei 3… entrao esse length não era pra mostrar so o que eu cadastrei?

Ele mostra pq vc definil a dimenssao ja com 10 ou seja vc nao pode inserir mais de 10

Funcionarios[] funcionario = new Funcionarios[10]; 

dua solucoes

a primeira seria vc criar um contador q vai contar quantas vezes ja fora adicionado uma pessoa, e depois coloca no for o valor do contador

a outra seria fazer com q caso o valor seje nulo entao ele nao faca a comparacao afinal o erro da pq ele ta comparando valores nulo entao faca assim

[code]
if (this.funcionario[i].getNome() == null) {
System.out.println(“Opa o Array[”+i+"] nao tem nada entao nao vai fazer comparacao");
}else{

if (this.funcionario[i].getNome().equals(f.getNome())) {
if (this.funcionario[i].getStatus() == true) {
s = true;
System.out.println(“Funcionário encontra-se na empresa”);
} else {
s = false;
System.out.println(“Funcionário não encontra-se nessa empresa!”);
}
System.out.println(“O funcionário está na empresa!”);
break;
} else if (i == 2) {
System.out.println(“O funcionário NAO faz parte dessa empresa!”);
}
}

}[/code]

realmente acho que vai da certo… vou testar mais tarde… depois posto o resultado aqui oks? já estou de saida… vlw pela dica…

abraço!

blz foi ate bom pq nao sabia q dava pra contar os arrays pelo length pensei q so dara pra contar caracteres numa Strings

Uma idéia,

Você pode usar ArrayList, isso vai deixar seu Array mais dinâmico.

Ex:


		ArrayList <Funcionarios> lista = new ArrayList<Funcionarios>(); 
		//Para adicionar objetos
		Funcionario f1 = new Funcionario();
		lista.add(f1);

		//Para recuperar os objetos
		for(int i=0;i < lista.size(); i++){
			Funcionario f = lista.get(i);
		}