Problema com 3 classes e 1 array

Tenho o seguinte exercício…

Criar classe Funcionario com nome, salario e RG, criar uma classe Empresa com nome, CNPJ e um array de Funcionario e depois criar um metodo contrata que recebe uma referencia a Funcionario como argumento, e guarda esse funcionário Ex.( void contrata(Funcionario f){…} ). Depois criar uma classe com o Main e mostrar os dados dos funcionários cadastrados.

Criei as seguintes classes:

Classe Empresa

public class Empresa { private String nome; private String cnpj; Funcionario func [] = new Funcionario [10]; public Empresa(String nome, String cnpj){ this.nome = nome; this.cnpj = cnpj; } public void contrata(Funcionario f){ for(int i = 0; i <= func.length; i++){ f = func[i]; System.out.println(func[i]); } } }

Classe Funcionário

public class Funcionario { private String nome; private double salario; private String rg; public Funcionario(String nome, double salario, String rg){ this.nome = nome; this.salario = salario; this.rg = rg; } }
Classe Main

[code]public class TestaFuncionario {
public static void main(String args []){
Funcionario f1 = new Funcionario(“Felipe”, 15000.0, “36.702.810-4”);
Funcionario f2 = new Funcionario(“João”, 1000.0, “12.345.678-10”);
Empresa emp = new Empresa(“TESTE”, “0111335513515”);
emp.contrata(f1);

}

}[/code]

Quando mando executar aparece o seguinte resultado:

run:
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 10
null
null
null
at Empresa.contrata(Empresa.java:11)
null
at TestaFuncionario.main(TestaFuncionario.java:7)
null
null
null
null
null
null

Qual o motivo de mostrar esse resultado??? Já tentei modificar mais sempre mostra o mesmo resultado…
Se alguém puder ajudar eu agradeço mto xD

Quando for postar código, por favor, use a tag code. As tags de negrito e itálico ajudam muito pouco comparado a um código colorido e formatado de verdade. Outra coisa, não use só letras maiúsculas nos títulos do seu tópicos. Além de deixar o título horrível de ler, pode deixar o GUJ realmente um horror se todos começarem a fazer isso.

Seu problema é que você está imprimindo o array de funcionários inteiro, tenha sido contratado os 10 funcionários ou não. Mantenha um contador de quantos funcionários efetivamente existem na empresa e só imprima até lá, ou use um List.

Outra coisa, o seu for deve ir até que i < funcionarios.length. Lembre-se que como os índices começam em 0, o índice length não existe e, portanto, o = vai dar aquele pau de "ArrayIndexOutOfBoundsExceptions".

então… eu alterei o código na parte em que imprime o array e blz… o erro “ArrayIndexOutOfBoundsExceptions” sumiu… só que o que eu não entendo é o motivo de aparecer apenas NULL nos dados do funcionário quando imprimo o array. Em relação a usar o List… eu ainda não aprendi xD

Seu array é para 10 funcionários, mas vc só cadastra 2. O que tem nas outras posições? NULL.

Correto… mais no caso deveria aparecer os dados q eu gravei e o resto NULL… e não está acontecendo… até nas posições que eu gravo as informações está aparecendo null…

Reveja o seu método contrata.

Algumas dicas:

  1. Não será necessário usar um for;
  2. Quem deve receber dados é func[i] e não o contrário.
  3. Ainda falta um contador para dizer quantos funcionários há na empresa.