Problema com array e objeto

5 respostas
c354r


Estou com um erro aqui que estou tentando resolver e não consigo, vou tentar explicar não sei se vou conseguir.
Bom, estou com um array de objetos e na hora de atribuir valor aos atributos ele dá erro.
O código:

import javax.swing.JOptionPane;

public class JFuncionarios extends JEmpresa {
	 private static int number = 0;
	 JFuncionarios[] listaDeFunc = new JFuncionarios[number];


public void addFunc(){
	this.number++;
	JFuncionarios func1 = new JFuncionarios();
	String nom = JOptionPane.showInputDialog("Digite o nome do novo funcionário");
	func1.listaDeFunc[number].nomeFunc = nom;
	String idade = JOptionPane.showInputDialog("Digite a idade do(a) "+ nom);
	int idad = Integer.parseInt(idade);
	func1.listaDeFunc[number].idadeFunc = idad;
	String cargo = JOptionPane.showInputDialog("Digite o cargo do(a) "+ nom);
	func1.listaDeFunc[number].cargoFunc = cargo;
	JOptionPane.showMessageDialog(null, "Quantidade de funcionários: "+ number);
Erro:



[i]

Exception in thread main java.lang.ArrayIndexOutOfBoundsException: 1

at JFuncionarios.addFunc(JFuncionarios.java:11)

at Teste.main(Teste.java:9)

[/i]

5 Respostas

L

É porque você está aumentando a posição para 1.

Em Java as posições da Array começa com 0.

No seu caso está tentando atribuir na posição 1, que nao existe na Array.

c354r
Mudei isso mas continua o erro, Lucas. ;/ Veja:
import javax.swing.JOptionPane;

public class JFuncionarios extends JEmpresa {
	 JFuncionarios[] listaDeFunc = new JFuncionarios[10];


public void addFunc(){
	JFuncionarios func1 = new JFuncionarios();
	String nom = JOptionPane.showInputDialog("Digite o nome do novo usuário");
	func1.listaDeFunc[1].nomeFunc = nom;
	String idade = JOptionPane.showInputDialog("Digite a idade do(a) "+ nom);
	int idad = Integer.parseInt(idade);
	func1.listaDeFunc[1].idadeFunc = idad;
	String cargo = JOptionPane.showInputDialog("Digite o cargo do "+ nom);
	func1.listaDeFunc[1].cargoFunc = cargo;

E o erro é o mesmo.

Allan_Barcelos

use Vector nesse caso, porque não precisa passar um número para iniciar,

Vector <Integer> v = new Vector <Integer> (1,1);
Allan_Barcelos

Não tinha terminado de ler :oops:

Cria um funcionario, passa todos os atributos e talz, e depois só faz teuVector.add(teuFuncionario); :wink:

R

como o amigo de cima disse, tenta algo nessa linha cara!

public static void main(string[] args){ 
    
	List funcionariosEmpresaX = new ArrayList();
	
	FuncionarioTO funcionario = new FuncionarioTO();   
    String nom = JOptionPane.showInputDialog("Digite o nome do novo usuário " +nom);   
    String idade = JOptionPane.showInputDialog("Digite a idade do(a) "        +idade);   
    String cargo = JOptionPane.showInputDialog("Digite o cargo do "			  + nom); 
   
    funcionario.setNom(nom);
    funcionario.setIdade(idade);
    funcionario.setCargo(cargo);
    
    funcionariosEmpresaX.add(funcionario);    

		for(int i = 0; i < funcionariosEmpresaX.size(); i++){
			FuncionarioTO func = funcionariosEmpresaX.get(i);
			System.out.println("Funcionário número:"+funcionariosEmpresaX.get(i));
			System.out.println("nome do Funcionário cadastrado:"+func.getNome);
			System.out.println("idade do Funcionário cadastrado:"+func.getIdade);
			System.out.println("cargo do Funcionário cadastrado:"+func.getNome);
		}
	}
}

Não esquece de criar a classe FuncionarioTO, e criar os devidos gets e sets nela, o eclipse gera isso automatico

qq coisa posta ai

abss

Criado 2 de junho de 2010
Ultima resposta 3 de jun. de 2010
Respostas 5
Participantes 4