Cadastro Funcionarios

5 respostas
CristianPalmaSola10
package exer9;

import java.util.Vector;

public class Main {

    public Funcoes f;
    public Funcionarios fc;
    public Calculos c;
    public Vector vec;

    public Main() {
        f = new Funcoes();
        fc = new Funcionarios();
        c = new Calculos();
        vec = new Vector();
    }

    public static void main(String[] args) {
        Main m = new Main();
        m.pegaDados();
    }

    public void pegaDados() {
        Main m = new Main();
        String msg = "";
        int cont = 0;
        while (cont == 0) {
            String nome = f.leiaString("Informe o nome!");
            int d = -6;
            while (d < 0) {
                d = f.leiaInteiro("Informe o numero de dependentes!");
            }
            double horas = -8;
            while (horas <= 0) {
                horas = f.leiaDouble("Informe a quantia de horas trabalhadas");
            }
            fc = new Funcionarios(nome, d, horas);
            fc.setNome(nome);
            fc.setHorasTrabalhadas(horas);
            fc.setNumeroDependentes(d);
            m.alimentaVec();
            cont = f.confirm("Deseja inserir mais alguma informação?");
        }
        m.exibeDados();
    }

    public void alimentaVec(){
        double salarioB = c.calculaSalarioBruto();
        double salarioL = c.salarioLiquido(salarioB);
        double dif = c.calculaDiferenca(salarioB, salarioL);
        vec.add(fc.getNome() + " " + salarioB + " " + salarioL + " " +dif);
    }
    public void exibeDados(){
        String msg = "";
        for(int i = 0; i < vec.size(); i++){
            msg += vec.get(i);
        }
        f.exiba(msg);
    }
}

alguem pode me dizer pq ele naum exibe certo aonde esta o erro

5 Respostas

doug

Olá

Os erros estão nas linhas

  1. Main m = new Main();
    

Observe que você já instanciou a classe Main na linha 20 e logo após pediu o metodo pegaDados…
Dai ele entrou no pegaDados, então não precisa instanciar novamente a Main., pois você já está “dentro” dela.

  1. m.alimentaVec();
    

Como você já tem está na classe não precisa colocar esse m.alimentaVec(), basta chamar direto alimentaVec.

  1. m.exibeDados();
    

Essa linha repete a mesma coisa do 42.

Espero ter ajudado
Bons estudos
Flwss

CristianPalmaSola10

Ajudou sim muito obrigado
mas o programa naum faz os calculos q ele deveria fazer naum sei o q esta acontecendo

CristianPalmaSola10
package exer9;

public class Funcionarios {

    private String nome;
    private int numeroDependentes;
    private double horasTrabalhadas;

    public Funcionarios(String nome, int numeroDependentes, double horasTrabalhadas) {
        this.nome = nome;
        this.numeroDependentes = numeroDependentes;
        this.horasTrabalhadas = horasTrabalhadas;
    }

    public Funcionarios() {
    }

    public double getHorasTrabalhadas() {
        return horasTrabalhadas;
    }

    public void setHorasTrabalhadas(double horasTrabalhadas) {
        this.horasTrabalhadas = horasTrabalhadas;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getNumeroDependentes() {
        return numeroDependentes;
    }

    public void setNumeroDependentes(int numeroDependentes) {
        this.numeroDependentes = numeroDependentes;
    }

    
}
package exer9;

public class Calculos {

    Funcionarios f;

    public Calculos() {
        f = new Funcionarios();
    }

    public double calculaSalarioBruto(){
        double salario = (f.getNumeroDependentes() * 125.55) + (f.getHorasTrabalhadas() * 5.25);
        System.out.println(f.getNumeroDependentes()+ "     "+f.getHorasTrabalhadas());
        return salario;
    }

    public double salarioLiquido(double salarioBruto){
        double salarioLiquido = 0;
        salarioLiquido = salarioBruto - (salarioBruto * 0.12);
        return salarioLiquido;
    }

    public double calculaDiferenca(double salarioB, double salarioF){
        return salarioB - salarioF;
    }
}

essas sao as duas outras classes que eu uso no programa talvez o erro esteja nela

eduardo_vieira

No construtor da classe Calculos, vc está criando um Funcionario que não tem informação nenhuma nele. Ai quando fizer por exemplo

f.getNumeroDepentes()

ele vai pegar desse seu funcionario vazio.
O que vc tem q fazer é passar um Funcionario no construtor da classe calculos.
E o funcionario que vc passar tem q ter os dados dos dependentes e das horas trabalhadas, etc.
seu construtor ficaria mais o menos assim:

public Calculos(Funcionarios func) {  
        this.f = func;  
    }

no construtor da classe Main está assim

public Main() { f = new Funcoes(); fc = new Funcionarios(); c = new Calculos(); vec = new Vector(); }

vc terá que fazer c = newCalculos(fc);

mas não no construtor, pois a variavel fc ta vazia ainda, tem q chamar o newCalculos depois que pegar os dados do funcionario

pode até ser no final do metodo PegaDados()

algo como isso, acho que resolve:
public void pegaDados() {  
        Main m = new Main();  
        String msg = "";  
        int cont = 0;  
        while (cont == 0) {  
            String nome = f.leiaString("Informe o nome!");  
            int d = -6;  
            while (d < 0) {  
                d = f.leiaInteiro("Informe o numero de dependentes!");  
            }  
            double horas = -8;  
            while (horas <= 0) {  
                horas = f.leiaDouble("Informe a quantia de horas trabalhadas");  
            }  
            fc = new Funcionarios(nome, d, horas);  
            fc.setNome(nome);  
            fc.setHorasTrabalhadas(horas);  
            fc.setNumeroDependentes(d);  
            m.alimentaVec();  
            cont = f.confirm("Deseja inserir mais alguma informação?");  
        }
        c = new Calculos(fc);  <---------------------------------------------------------- aki o fc tem os dados, e vai poder calcular certo.
        m.exibeDados();  
    }

acho q eh isso, espero ter ajudado

CristianPalmaSola10

Isoo mesmo funcionou certinho
valeu aew

Criado 12 de março de 2011
Ultima resposta 12 de mar. de 2011
Respostas 5
Participantes 3