Problemas com array

10 respostas
LineFidelis

Bom pessoal,
to estudando pela apostila da Caelum, mas tem um exercicio do cap 5 que não to entendendo muito bem. É sobre array, lá vai:
[i]
----------/////----------
3- Crie uma outra classe, que vai possuir o seu método main. Dentro dele crie algumas instancias de Funcionario e passe para a empresa pelo método adiciona. Repare que antes você vai precisar criar a array, pois inicialmenmte o atributo funcionario da classe Empresa não se referencia a lugar nunhum (null).

Empresa empresa = new Empresa();
empresa.funcionario = new Funcionario[10];

Ou você pode construir a array dentro da própria declaração da classe Empresa.

Crie alguns funcionarios e passe como argumentos para o adicionar da empresa:

Funcionario f1 = new Funcionario();

f1.salario = 1000;

empresa.adiciona(f1);

Você pode criar esses funcionarios dentro de um loop se preferir.
----------/////----------
[/i]

O problema é quando eu faço isso da um erro de execução que não entendi nada.
O erro é :

Exception in thread “main” java.lang.NullPointerException
at cap5.EmpresaTest.main(EmpresaTest.java:10)

Se alguem puder me ajudar de alguma maneira eu agradeço. :slight_smile:

10 Respostas

tecdanilo

Passa o fonte completo aí.

F

Acho que esse vetor Funcionario f=new Funcionario(10);
nao deve ter sido inicializado para dar esse tipo de excecao,sem ver o codigo posso presumir esse tipo de erro.
tenta inicializar o vetor funcionario!

F

ve se era isso que vc estava tentando tentando fazer,pelo menos é aquilo que entendi pela explicacao

import static java.lang.System.out;
 class Funcionario{
     Double salario;
      Funcionario(double x){
         salario=x;
     }
     Funcionario(){}
 }
 
 class Empresa{
    Empresa empresa; 
    Funcionario funcionario[];
     void addiciona(Funcionario[] f){
       funcionario=f;   
     }
  }
       public class Main {
    
	public static void main(String[] args) throws Exception {
            Empresa empresa = new Empresa();
            Funcionario[] f=new  Funcionario[10];
              for(int i=0;i<f.length;i++){//inicializa o vetor funcionario
                double y=(double)(Math.random()* 1000);//coloca salario qualquer
                f[i]=new Funcionario(y); 
                
              }
            empresa.addiciona(f);
            out.println("Fulano ganha"+empresa.funcionario[0].salario);
           
		
	}
}

espero ter ajudado :smiley:

leandroadinolfi

Recomendo a utilização de ArrayList vc não fica preso ao instanciar o Objeto.

O

Ele ta estudando array :smiley:

leandroadinolfi

Disse ArrayList sem criar um vertor com tamanho fixo.

ViniGodoy

Mas ele tá estudando array. :smiley:
Calma, uma coisa de cada vez. Primeiro ele aprende arrays primitivos, depois ele vai para o objeto ArrayList.

LineFidelis

[color=red]Gente,
obrigada desde já pela ajuda.

FabioEM vou da uma olhada melhor no seu codigo para vê se é isso mesmo.

Ah!!
sei da existencia do ArrayList mas gostaria de da um passo de cada vez, dominando o array para depois dominar o ArrayList, sei que tem as suas vantagens mas como ViniGodoy falou “calma uma coisa de cada vez”.

:roll: [/color]

ViniGodoy

Bom, se de curiosidade alguém quiser ver como usa os Lists, dêem uma olhada nesse tópico aqui, que tem um exemplo prático:
http://www.guj.com.br/posts/list/74068.java#389435

Quinger
void addiciona(Funcionario[] f){
       funcionario=f;

quando da NullPointerException é pq vc ta passando um valor para algum objeto que não foi instanciado.

na classe Empresa o funcionario não foi instanciado, e está recebendo valor na função addciona…

Criado 25 de janeiro de 2008
Ultima resposta 29 de jan. de 2008
Respostas 10
Participantes 7