Exercicios

7 respostas
O

Boa Noite, estou com dificuldades de terminar os exercicios da apostila caelum no exercicio do capitulo 5.5 e 5.6

void contem
e void novoVetor

no caso contem tem que verificar se o funcionario esta na empresa e o novoVetor tem que criar um novo vetor maior e passar os funcionarios do vetor menor para o maior quando ele estiver cheio.

minha duvida nao sei se fiz correto o void contem se realmente ele vai funcionar, e o void novoVetor nao consigo fazer o tipo Funcionario virar Funcionario2 mesmo moldando ele com (Funcionario2). segue meu codigo.

agradeço que puder me ajudar.

Obrigado.

os Void em questão estão em NEGRITO

class Funcionario {

String nome;

String localDeTrabalho;

String dataEntradaBanco;

String rg;

double salario;

boolean trabalha; // variavel que vai receber sim ou não
void bonifica(double quantidade) {
	this.salario += quantidade;
}

void admite(String nome, String depto, String data, String rg, double salario) {
	this.trabalha = true;
	this.nome = nome;
	this.localDeTrabalho = depto;
	this.dataEntradaBanco = data;
	this.rg = rg;
	this.salario = salario;
}

void demite() {
	this.trabalha = false;
	System.out.println("Funcionario Demitido");
}

void mostra(){
	System.out.println("Nome: "+this.nome);
	System.out.println("Departamento: "+this.localDeTrabalho);
	System.out.println("Data Admissão: "+this.dataEntradaBanco);
	System.out.println("RG: "+this.rg);
	System.out.println("Salário: "+this.salario);
	if(trabalha){
		System.out.println("Status: Ativo ");
	}
	else{
		System.out.println("Status: Inativo ");
	}
}
}

class Funcionario2 {

String nome;

String localDeTrabalho;

String dataEntradaBanco;

String rg;

double salario;

boolean trabalha; // variavel que vai receber sim ou não

}
class Empresa {

String nome;

Funcionario[] empregados;

String cnpj;

Funcionario2[] operarios;
void adiciona(Funcionario f) {
	for(int x = 0; x < this.empregados.length; x++){
		if(empregados[x] == null){
			this.empregados[x] = f;
			break;
		}
	}
}

void mostraEmpregados() {
	for (int i = 0; i < this.empregados.length; i++) {
		if(empregados[i] != null){
			this.empregados[i].mostra();
		}
	}
}

[b]boolean contem(Funcionario f ){
boolean	possui = false;
	for (int i = 0; i < this.empregados.length; i++) {
		if(this.empregados[i] == f){
		possui = true;
		}
	}
	if(possui = true) {
		return true;
	}
	else {
		return false;
	}
}[/b]

[b]void novoVetor (Funcionario f){
	Funcionario[] Funcionario2 = new Funcionario[80];
	for(int i = 0; i < this.empregados.length; i++){
		for(int x = 0; x < this.operarios.length; x++){
		this.operarios[x] = (Funcionario2) empregados[i];
         }
      }
		
}
[/b]

}

public class Programa {

public static void main(String[] args) {

Funcionario f1;

f1 = new Funcionario();

f1.admite(,Limpeza,19/10/2010,[telefone removido],628.53);
Funcionario f2 = new Funcionario();
	f2.admite("Aluno","Cepro","23/10/2010","5264654",228.53);
	
	Empresa empresa = new Empresa();
	empresa.empregados = new Funcionario[20];
	empresa.nome = "aula Java";
	empresa.cnpj = "985.325.698/0001-63";
	
	empresa.adiciona(f1);
	empresa.adiciona(f2);
	
	empresa.mostraEmpregados();
	
	empresa.contem(f1);
	
	
}

}

7 Respostas

marcusviniciusbastos

Boa noite.

dá uma olhada nesse tópico.
Tem o exercício 5.5 resolvido.
http://www.guj.com.br/posts/list/208073.java#1139911

O

cara eu ja tinha lido esse post, só que ali falta justamente os dois o boolean contem e o void novoVetor

nesse post do link que voce me passou tem quase tudo menos isso.

o cara fez apenas o ate o 5.4

mesmo assim obrigado

fico no aguardo de mais ajuda.

Obrigado

O

eae galera nao tem ninguem ae que possa me dizer o que eu estou fazendo de errado ?

obrigado

adriano_si

Cara, põe teu código na TAG Code e coloca o enunciado, acho que vai ficar mais fácil…

Abs :wink:

O

Enunciado do exercicio:

5) (Opcional) Crie um método para verificar se um determinado Funcionario se encontra ou não como
funcionário desta empresa:
boolean contem(Funcionario f) {
// ...
}
Você vai precisar fazer um for na sua array e verificar se a referência passada como argumento se encontra
dentro da array. Evite ao máximo usar números hard-coded, isto é, use o .length.

6) (Opcional) Caso a array já esteja cheia no momento de adicionar um outro funcionário, criar uma nova maior
e copiar os valores. Isto é, fazer a realocação já que java não tem isso: uma array nasce e morre com o
mesmo length.

Pois Bem, minha duvida se meu Void contem esta correto ?

e como posso continuar ou refazer meu boolean novoVetor pois não consigo fazer o tipo Funcionario virar tipo Funcionario2 mesmo moldando ele (Funcionario2).

Obrigado a quem ajudar.

Abraço.

class Funcionario { 
String nome; 
String localDeTrabalho; 
String dataEntradaBanco; 
String rg; 
double salario; 
boolean trabalha; // variavel que vai receber sim ou não 

void bonifica(double quantidade) { 
this.salario += quantidade; 
} 

void admite(String nome, String depto, String data, String rg, double salario) { 
this.trabalha = true; 
this.nome = nome; 
this.localDeTrabalho = depto; 
this.dataEntradaBanco = data; 
this.rg = rg; 
this.salario = salario; 
} 

void demite() { 
this.trabalha = false; 
System.out.println("Funcionario Demitido"); 
} 

void mostra(){ 
System.out.println("Nome: "+this.nome); 
System.out.println("Departamento: "+this.localDeTrabalho); 
System.out.println("Data Admissão: "+this.dataEntradaBanco); 
System.out.println("RG: "+this.rg); 
System.out.println("Salário: "+this.salario); 
if(trabalha){ 
System.out.println("Status: Ativo "); 
} 
else{ 
System.out.println("Status: Inativo "); 
} 
} 
} 
class Funcionario2 { 
String nome; 
String localDeTrabalho; 
String dataEntradaBanco; 
String rg; 
double salario; 
boolean trabalha; // variavel que vai receber sim ou não 
}	

class Empresa { 
String nome; 
Funcionario[] empregados; 
String cnpj; 
Funcionario2[] operarios; 

void adiciona(Funcionario f) { 
for(int x = 0; x < this.empregados.length; x++){ 
if(empregados[x] == null){ 
this.empregados[x] = f; 
break; 
} 
} 
} 

void mostraEmpregados() { 
for (int i = 0; i < this.empregados.length; i++) { 
if(empregados[i] != null){ 
this.empregados[i].mostra(); 
} 
} 
} 

boolean contem(Funcionario f ){ 
boolean	possui = false; 
for (int i = 0; i < this.empregados.length; i++) { 
if(this.empregados[i] == f){ 
possui = true; 
} 
} 
if(possui = true) { 
return true; 
} 
else { 
return false; 
} 
} 

void novoVetor (Funcionario f){ 
Funcionario[] Funcionario2 = new Funcionario[80]; 
for(int i = 0; i < this.empregados.length; i++){ 
for(int x = 0; x < this.operarios.length; x++){ 
this.operarios[x] = (Funcionario2) empregados[i]; 
} 
} 

} 

}	

public class Programa { 
public static void main(String[] args) { 
Funcionario f1; 
f1 = new Funcionario(); 
f1.admite("Zé","Limpeza","19/10/2010","[telefone removido]",628.53); 

Funcionario f2 = new Funcionario(); 
f2.admite("Aluno","Cepro","23/10/2010","5264654",228.53); 

Empresa empresa = new Empresa(); 
empresa.empregados = new Funcionario[20]; 
empresa.nome = "aula Java"; 
empresa.cnpj = "985.325.698/0001-63"; 

empresa.adiciona(f1); 
empresa.adiciona(f2); 

empresa.mostraEmpregados(); 

empresa.contem(f1); 


} 

}
evertonsilvagomesjav

Então, esse método contem seu é do tipo boolean e nao void ok?! E nao seria verificar se ja existe algum funcionario com o mesmo atributo nao? Tipo mesmo rg, alguma coisa assim?

Porque se vc for cadastrar alguem, toda hora vc precisará dar um new Funcionario(), para ter um funcionario novo, sendo assim vc nunca tera duas referencias iguais.

Aí vc faria:

boolean contem(Funcionario f ){   

for (int i = 0; i < this.empregados.length; i++) {   
if(this.empregados[i].rg.equals(f.rg)){   
return true; 
}   
}
return false;
}
Sobre o metodo novoVetor ele é do tipo void e nao boolean ok?! E deve estar gerando um ClassCastException nesta linha ai
this.operarios[x] = (Funcionario2) empregados[i];

Um Funcionario nao É-UM Funcionario2 por isso á exceção.

O

everton realmente eu inverti quando escrevi void o novoVetor e boolean o contem, obrigado pelas dicas

Criado 26 de outubro de 2010
Ultima resposta 28 de out. de 2010
Respostas 7
Participantes 4