Duvida de iniciante (arrays)

4 respostas
K

To com um problema aqui, estava fazendo a apostila da caelum, no capitulo 5 ele começa a explicar sobre arrays.
Bem oque eu entendi foi: que eu não entendi nada, li e re li, continuei na mesma.
(oque eu entendi foi, que as arrays guardam um valor para referir a uma variável.)

certo dai eu decidi passar pros exercícios, quando eu me deparo com o seguinte exercício:
Percorra o atributo empregados da sua instância da Empresa e imprima os salários de todos seus funcionários.

dai eu fiz o seguinte codigo:

class funcionario {

String nome;
int salario;
boolean trabalhando;

}

class empresa {

funcionario[] empregados;
int cnpj;
void adiciona(funcionario f){

this.empregados[10] = f;

}

void mostrar() {
for (int i = 0; i < this.empregados.length; i++) {

System.out.println("Funcionario posicao:" +i);

//areá que eu não sei oque colocar//

}
}
}

public class Main {
static public void main (String args[]){

empresa loja = new empresa();
     loja.empregados = new funcionario[10];
     funcionario f1 = new funcionario();
     f1.salario = 100;
     f1.nome = "Carlos";
     loja.adiciona(f1);
     funcionario f2 = new funcionario();
     f2.salario = 200;
     f2.nome = "Jose";
     loja.adiciona(f2);
     
     loja.mostrar();
}

}

tipo ali na onde eu coloquei “eu não sei oq colocar”
eu ja tentei dar um print em empregados[10], ja tentei dar print em f/f.salario/funcionarios[10].

em fim.-. acho que era melhor eu aprender oque é realmente arrays antes de ir pros exercícios. por isso posto minha duvida aqui. oque é arrays e como usar?

4 Respostas

panthovillas

quando vc instancia um array vc especifica o tamanho dele:

loja.empregados = new funcionario[10];

agora qdo vc vai atribuir um valor vc indica em qual posição do array vc quer atribuir.

void adiciona(funcionario f){ 
this.empregados[10] = f; 
}

Neste codigo vai te dar um erro, pois vc esta tentando adicionar um objecto numa posição que não existe no array. Qdo vc disse q teu array tem 10 posicoes elas vão de 0 a 9;

o correto seria vc passar a posição que desejaria adicionar o objecto:

void adiciona(int index, funcionario f){ this.empregados[index] = f; }

Para ler o array vc pode fazer um for:

for (int i = 0 ; loja.empregados.length > i ; i++) {
empregado = loja.empregados[i];
// faz o que vc quer com empregado
}
Fexx

Para iniciante arrays é uma da complicações.
As vezes é preciso procurar por diversos artigos para entender realmente o que deseja, por isso estou enviando esse link.

http://www.youtube.com/watch?v=fkHKMc9vEpI

é uma vídeo aula, veja se entende.

lembrando: quando fo colocar codigo no forum, use as tags [code].

Abraços e boa sorte.

K

Obrigado a todos, vou tentar fazer aqui.

J

Olá pessoal, também sou novo aqui, resolvi resolver o exercício pra aprimorar as habilidades em programação.

Kinaite seu código tem um erro de lógica no momento que você adiciona o objeto na posição 10 do array empregados do método adiciona, sendo que o array com 10 posições, os índices vão de 0 a 9 o segundo erro é que sempre vai adicionar a referência de um objeto na posição 10.

Eu olhei e dei uma aprimorada no código, não é o ideal, mas resolve o exercício.

Espero ter ajudado.

class funcionario {

	String nome;
	int salario;
	boolean trabalhando;

}

class empresa {

	funcionario[] empregados;
	int cnpj;
	int totalFuncionarios = 0;
	int contadorFuncionario = 0;
	
	void setTotalFuncionarios(int totalFuncionarios){
		this.totalFuncionarios = totalFuncionarios;
		this.empregados = new funcionario[this.totalFuncionarios];
	}
	
	void adicionaFuncionario(){
		empregados[this.contadorFuncionario] = new funcionario();
		this.contadorFuncionario++;
	}

	void mostrarSalario() {
		for (int i = 0; i < this.contadorFuncionario; i++) {
			System.out.println("Funcionario posicao: " + i);
			System.out.println("Funcionario nome: "+ this.empregados[i].nome);
			System.out.println("Funcionario Salario:"+ this.empregados[i].salario + "\n");
		}
	}
}


public class Programa1 {
	static public void main (String args[]){
		empresa loja = new empresa();
		loja.setTotalFuncionarios(10);
		loja.adicionaFuncionario();
		loja.empregados[0].nome = "Carlos";
		loja.empregados[0].salario = 100;
		loja.adicionaFuncionario();
		loja.empregados[1].nome = "José";
		loja.empregados[1].salario = 200;
		loja.mostrarSalario();
	}
}
Criado 19 de janeiro de 2012
Ultima resposta 19 de jan. de 2012
Respostas 4
Participantes 4