Estou com um problema no meu código, fiz um construtor na classe empresa conforme o enunciado do exercício, compilei a classe empresa e deu tudo certo. Na minha casse TestaEmpresa, passei o parâmetro conforme o construtor pede, compilei a classe e deu tudo certo. Porém, na hora que rodo a classe TestaEmpresa, resulta no erro que segue abaixo:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at Empresa.adiciona(Empresa.java:45) at TestaEmpresa.main(TestaEmpresa.java:16)
Não estou conseguindo encontrar o problema, gostaria de saber se alguém poderia por favor me ajudar!!!
Segue abaixo minhas classes:
class Empresa {
private String nome;
private String cnpj;
private String endereco;
private Funcionario[] empregados; //= new Funcionario[10];
private int tamanhoDoArray = 0;
int count = 0;
public Empresa () {}
public Empresa (int tamanhoDoArray){
this.empregados = new Funcionario [this.tamanhoDoArray];
}
public void setNome (String nome) {
this.nome = nome;
}
public String getNome () {
return this.nome;
}
public void setCnpj (String cnpj) {
this.cnpj = cnpj;
}
public String getCnpj () {
return this.cnpj;
}
public void setEndereco (String endereco) {
this.endereco = endereco;
}
public String getEndereco () {
return this.endereco;
}
public Funcionario getFuncionario (int posicao) {
return this.empregados[posicao];
}
public void adiciona (Funcionario f) {
this.empregados[this.count] = f;
this.count++;
}
public boolean contem(Funcionario f) {
for (int i = 0; i < this.empregados.length; i++) {
if (f == this.empregados[i]) {
return true;
}
}
return false;
}
public void mostraTodasAsInformacoes() {
for (int i = 0; i < this.empregados.length; i++) {
if (this.empregados[i] != null) {
System.out.println("");
System.out.println("Funcionário na posição: " + i);
this.empregados[i].mostra();
}
}
}
}
public class Funcionario {
private String nome;
private String rg;
private Data dataDaEntrada = new Data();
private String departamento;
private double salario;
public Funcionario () {
}
public Funcionario (String nome) {
this.nome = nome;
}
public String getNome() {
return this.nome;
}
public void setRg(String rg) {
this.rg = rg;
}
public String getRg() {
return this.rg;
}
public void preencheDataDaEntrada(int dia,int mes, int ano) {
this.dataDaEntrada.imprimeData(dia, mes, ano);
}
public void setDepartamento(String departamento) {
this.departamento = departamento;
}
public String getDepartamento() {
return this.departamento;
}
public void recebeAumento(double valor) {
this.salario += valor;
}
public double getGanhoAnual() {
return this.salario * 12;
}
public void setSalario(double valor) {
this.salario = valor;
}
public double getSalario() {
return this.salario;
}
public void mostra() {
System.out.println("");
System.out.println("Nome: " + getNome());
System.out.println("RG: " + getRg());
System.out.println("Departamento: " + getDepartamento());
System.out.println("Salário R$: " + getSalario());
System.out.println("Ganho Anual: " + getGanhoAnual());
System.out.println("Data de entrada: " + this.dataDaEntrada.getFormatada());
}
}
class Data {
int dia;
int mes;
int ano;
void imprimeData (int dia, int mes, int ano){
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
String getFormatada() {
return this.dia + "/" + this.mes + "/" + this.ano;
}
}
class TestaEmpresa {
public static void main (String [] args) {
Empresa empresa = new Empresa(10);
Funcionario f = new Funcionario("Vitor Camargo");
f.setRg ("25.889.335-2");
f.setDepartamento ("RH");
f.setSalario (1000);
f.preencheDataDaEntrada (5,7,2015);
empresa.adiciona (f);
Funcionario f1 = new Funcionario("Carlos Augusto dos Santos");
f1.setRg ("478.886.345-7");
f1.setDepartamento ("SME");
f1.setSalario (3000);
f1.preencheDataDaEntrada (12,8,2010);
empresa.adiciona(f1);
empresa.getFuncionario(0).mostra();
empresa.getFuncionario(1).mostra();
}
}