Ao tentar inserir um funccionario que nao existe, o arquivo nao compila. Como posso fazer para compilar o arquivo mesmo passando um funcionario inexistente?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Ao tentar inserir um funccionario que nao existe, o arquivo nao compila. Como posso fazer para compilar o arquivo mesmo passando um funcionario inexistente?
class Funcionario {
String nome; String departamento; double salario; Data dataEntradaNoBanco; long rg;
void recebeAumento (double valorAumento){ this.salario += valorAumento; }
double calculaGanhoAnual (){
return this.salario * 12; }
void mostra(){ System.out.println ("Nome " + this.nome); System.out.println ("Departamento " + this.departamento); System.out.println ("Salario " + this.salario); System.out.println ("Data " + this.dataEntradaNoBanco.getFormatada()); System.out.println ("RG " + this.rg); System.out.println ("Ganho Anual " + this.calculaGanhoAnual());
}
}
class Empresa {
String nome; long cnpj; Funcionario[] empregados; int telefone; int livre=0;
void adiciona (Funcionario f){
this.empregados[this.livre] = f; this.livre++; }
void mostraEmpregados(){ for (int i=0;i<this.livre; i++){ System.out.println ("Empregado na posicao " + i); System.out.println("R$ " + this.empregados[i].salario); }
}
void mostraTodasInformacoes (){ for (int i=0; i<this.livre; i++){ System.out.println("Empregado na posição " + i); empregados[i].mostra();
}
}
boolean contem (Funcionario f){ for(int i = 0; i<this.livre;i++){ if (f == empregados[i]){ System.out.println(f.nome); } }
return false; } }
class TesteEmpresa {
public static void main (String[] args){
Data data = new Data(); Empresa empresa = new Empresa(); empresa.empregados = new Funcionario[5];
Funcionario f1 = new Funcionario(); f1.nome = "Diogo"; f1.departamento = "Financas"; f1.salario = 5000; f1.dataEntradaNoBanco = new Data(); f1.dataEntradaNoBanco.preencherData(21,02,1977); f1.rg = 202304301; empresa.adiciona(f1);
Funcionario f2 = new Funcionario(); f2.nome = "Rafael"; f2.departamento = "Seguros"; f2.salario = 10000; f2.dataEntradaNoBanco = new Data(); f2.dataEntradaNoBanco.preencherData(11,01,1980); f2.rg =123114239; empresa.adiciona (f2);
//empresa.empregados[0].mostra(); //empresa.empregados[1].mostra();
//empresa.mostraEmpregados();
//empresa.mostraTodasInformacoes(); empresa.contem(f2); } }
class Data {
int dia; int mes; int ano;
void preencherData (int dia, int mes, int ano){
this.dia = dia; this.mes = mes; this.ano = ano; }
String getFormatada () {
return this.dia + "/" + this.mes + "/" + this.ano; } }
Olá Diogo, você poderia mandar o código? facilitaria o entendimento do problema, lembrete de usar a formatação do forum, para que o código fique separado das perguntas, espero por sua resposta para que eu possa lhe ajudar.
Diogo o código está compilando, eu testei ele aqui, so vi um erro, que foi no fechamento de { na classe TestaEmpresa, mas pode ser pq eu tenha copiado e colado, de qualquer forma dá uma olhada.
O código está me retornando False é isso mesmo que vc quer? porque não compilar é uma coisa e não mostrar o resultado esperado é outra, aguardo sua resposta.
Diogo me desculpe, o meu eclipse deu um bug e acabei não vendo o erro do seu código, existe sim um problema, na Empresa está assim:
class Empresa {
String nome;
long cnpj;
Funcionario[] empregados;
int telefone;
int livre = 0;
// metodos...
}
Mas ela tem que ficar assim:
class Empresa {
String nome;
long cnpj;
Funcionario[] empregados = new Funcionario[10] ;
int telefone;
int livre = 0;
//metodos...
}
Pois se você não instanciar empregados ela ainda não existe, lembre que empregados é um array de objetos e não um objeto só, e vc precisa dizer o tamanho dele, seja na hora que você declara na Classe como estamos fazendo, ou na hora que vc instância. ex:
class Empresa {
String nome;
long cnpj;
Funcionario[] empregados ;
int telefone;
int livre = 0;
//metodos...
}
class TestaEmpresa{
public static void main(String[] args) {
Empresa e = new Empresa();
Funcionario f = new Funcionario();
e.empregados = new Funcionario[10]; // instanciamos o array aqui
e.adiciona(f);
e.mostraEmpregados();
}
}
espero que tenha entendido, se tiver ficado com dúvidas não existe em perguntar.
Fiquei com o mesmo problema a função se autocompleta com uma objeto já existente . / To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. */ package funcionario;
/* @author teste01 / public class TesteEmpresa { public static void main(String []args){ Empresa empresa = new Empresa(); empresa.empregados = new Funcionario [10];
Funcionario Lucas = new Funcionario(); Lucas.anual = 12000; Lucas.departamento = "qual quer um"; Lucas.salario = 1650.00; Lucas.pessoa = new Pessoa(); Lucas.pessoa.nome = "Lucas Alves "; Lucas.pessoa.rg = 5648949;
empresa.adicionar(Lucas);
Funcionario Alves = new Funcionario(); Alves.anual = 12000; Alves.departamento = "qual quer um"; Alves.salario = 1450.00; Alves.pessoa = new Pessoa(); Alves.pessoa.nome = "Alves Cardoso"; Alves.pessoa.rg = 5648949;
empresa.adicionar(Alves);
Funcionario Cardoso = new Funcionario(); Cardoso.anual = 12000; Cardoso.departamento = "qual quer um"; Cardoso.salario = 2000.00; Cardoso.pessoa = new Pessoa(); Cardoso.pessoa.nome = "Cardoso de jesus"; Cardoso.pessoa.rg = 5648949;
empresa.adicionar(Cardoso);
//empresa.mostraEmpregados(); empresa.mostrarTudo(); empresa.procurar(Joao); } }
package funcionario;
public class Empresa { String nome; String cnpj; Funcionario [] empregados ; //aqui eu criei um array do tipo funcionario sem um tamanho definido String email; String endereço; int livre = 0;
void adicionar (Funcionario func){ this.empregados[this.livre] = func; //o atributo empregados dessa classe e livre dessa classe this.livre ++; }
void mostraEmpregados (){ for(int i = 0 ; i < this.livre ; i ++){ System.out.println("Funcionario " + empregados[i].pessoa.nome );
} }
void mostrarTudo(){ for(int i = 0 ; i < this.livre ; i ++){ // System.out.println("Funcionario : "+empregados[i].pessoa.nome); // System.out.println("Departamento : "+empregados[i].departamento); // System.out.println("Salario : "+empregados[i].salario); // System.out.println("Rg : "+empregados[i].pessoa.rg); // System.out.println("Salario anual : "+empregados[i].anual); this.empregados[i].mostra(); // mandei index por index e ele executou o método } } boolean procurar(Funcionario procura) { for (int i = 0; i < this.livre; i++) { if (procura == this.empregados[i]) { System.out.println("Encontrou "); return true; } } System.out.println("Nao encontrou"); return false; } }