Bom dia, apesar do NetBeans não marcar nenhum erro, na hora de compilar aparece a seguinte mensagem:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 at empresa_funcionario.Empresa.adiciona(Empresa.java:33) at empresa_funcionario.Alura.main(Alura.java:23)
Não entendo o que há de errado. Segue o código:
public class Alura {
public static void main(String[] args) {
Empresa e1 = new Empresa(1);
Funcionario[] f = new Funcionario[2];
Funcionario f1 = new Funcionario();
f1.setNome("Hugo");
f1.setDepartamento("Engenharia");
f1.setSalario(100);
f1.setAumento(50);
e1.adiciona(f1);
Funcionario f2 = new Funcionario();
f2.setNome("Diogo");
f2.setDepartamento("Ensino");
f2.setSalario(200);
f2.setAumento(100);
e1.adiciona(f2);
e1.mostraTodosDados();
}
}
e a classe Empresa
package empresa_funcionario;
public class Empresa {
private String nome;
private Funcionario[] empregados;
private String cnpj;
public String getNome(){
return this.nome;
}
public void setNome(String nome){
this.nome = nome;
}
public Funcionario getFuncionario(int posicao){
return this.empregados[posicao];
}
public Empresa (int empregados){
this.empregados = new Funcionario[empregados];
}
public String getCNPJ(){
return this.cnpj;
}
public void setCNPJ(String cnpj){
this.cnpj = cnpj;
}
int livre = 0;
public void adiciona(Funcionario f){
this.empregados[this.livre] = f;
this.livre++;
}
void mostraSalarios(){
for(int i = 0; i <= this.empregados.length; i++){
System.out.println("Funcionario na posição: " + i);
System.out.println("Salario " + this.empregados[i].getSalario());
}
}
void mostraTodosDados(){
for(int i = 0; i < this.livre; i++){
System.out.println("Funcionarios na posição: " + i);
this.empregados[i].getDadosFuncionario();
}
}
public boolean contem(Funcionario f){
for(int i = 0; i < this.empregados.length; i++){
if(this.empregados[i] == null) continue;
if(f == this.empregados[i]){
return true;
}
}
return false;
}
}
A linha 33 que diz no erro é a seguinte: this.empregados[this.livre] = f;
do método adiciona(Funcionario f)
A linha 23, é a da classe main e1.adiciona(f2);