5
respostas

Passando um funcionario inexistente o arquivo nao compila

Ao tentar inserir um funccionario que nao existe, o arquivo nao compila. Como posso fazer para compilar o arquivo mesmo passando um funcionario inexistente?

5 respostas

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; } }

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software