Como passar um parametro do tipo array?

6 respostas
diegohsi

Boa noite pessoal, estou eu novamente solicitando a ajuda de vós "miceis". Ja tentei de várias formas passar a minha instancia empregados para o método adicionaFuncionario() {}
mas sempre ocorre um erro. O que estou fazendo de errado novamente ??

public class Funcionario {
	String nome;
	String RG;
	Data dataEntrada;
	double salario;
	boolean estaNaEmpresa;
	
}
public class Empresa {
	String cnpj;
	String nome;
	Funcionario[] empregados;
	int i = 0;
	
	// Método adiciona funcionário no array
	void adicionaFuncionario(Funcionario f) {
		if(i <= empregados.length) {
			this.empregados[i] = f;
			i++;
		}
	}
}
public class TestaEmpresa {

	public static void main(String[] args) {
		
		Empresa empresa1 = new Empresa();
		empresa1.empregados = new Funcionario[5];
		
		empresa1.adicionaFuncionario(empresa1.empregados); // Erro neste método.
	}
}

6 Respostas

E

Você quer adicionar 1 funcionário ou um monte de funcionários? E que adicionaFuncionario adiciona apenas 1 funcionário (porque recebe um objeto da classe Funcionario, não um array de Funcionario).
Note que o Java não é esperto suficiente para chamar o adicionarFuncionario para cada elemento do array de funcionários; você é que tem de criar um “for” e adicionar um por um .

Allan_Barcelos

Olha cara, é mais facil tu usar um Vector de funcionarios, a não ser que você tenha somente um numero x de funcionarios, e como o amigo falou ai, tu não precisa passar como parametro um array de funcionarios, para inserir tu deve passar como paremetro um funcionario
exemplo com array:

public void insere(Funcionario f){
empregados[i] = f;
i++;
}

exemplo com Vector

public void insert(Funcionario f){
empregados.add(f);
}

Para passar um array como parametro tu vai fazer:

teuArray = arrayParametro;
T

É o problema ta do loop mesmo, ta bem estranho a lógica da coisa.

marcelo.bellissimo
Faça um List de Funcionario...
List<Funcionario> funcionarios = new ArrayList<Funcionario>();

// pra adicionar:
void addFuncionario(Funcionario funcionario){
    // verifica se a lista foi instanciada ja
    if (funcionarios == null) funcionarios = new ArrayList<Funcionario>();
    // adiciona o funcionario
    empregados.add(funcionario);
}

O problema do array é que voce ainda precisa passar o tamanho dele, não há como inserir dinamicamente, por isso usamos List, que trata isso pra gente... sacou?

rat000
tas passando um array de funcionarios para o metodo mais ele quer só um funcionario.... Ja seta o tamanho da tua array de funcionarios.
String cnpj;
		String nome;
		Funcionario[] empregados = new Funcionario[5];
		int i = 0;
		
		// Método adiciona funcionário no array
		void adicionaFuncionario(Funcionario f) {
			if(i <= empregados.length) {
				this.empregados[i] = f;
				i++;
			}
		}

o metod main

public static void main(String[] args) {
			
			Empresa empresa1 = new Empresa();
			Funcionario f1 = new Funcionario();
			Funcionario f2 = new Funcionario();
			f1.nome="rat000";
			f2.nome="guj";
			empresa1.adicionaFuncionario(f1); // Assim não da mais erro, do jeito que vc fez.
			empresa1.adicionaFuncionario(f2);
			for(int i = 0; i < 2; i++){
				System.out.println(empresa1.empregados[i].nome);
			}
			
		}

Testei aqui assim funcionou

aajjbb

se você ja sabe o numero exato, usa uma array, mas mesmo assim, é melhor usar ArrayList, List ou Vector,

Criado 9 de junho de 2010
Ultima resposta 10 de jun. de 2010
Respostas 6
Participantes 7