Ajuda com resolução de exercicio

4 respostas
_DK_

Estou praticando em Java, e preciso de ajuda na resolução de um exercicio.

É um programa que calcula o Salário Líquido de um funcionário. E me pede para criar uma classe CalculaSalario, onde o Construtor recebe um objeto Funcionario e guarda-lo em uma variavél privada dentro da classe Calcula Salario. A CalculaSalario ainda terá dois métodos Liquido e INSS que retornam os valores calculados baseado no salario do funcionario. O salário liquido é composto pelo salario bruto - inss.

O problema é que não esta calculando no meu exercicio, e o salário digitado é o salario que é mostrando. Embaixo as classes.

public class Main {

    public static void main(String[] args) {

        // Cria (instancia) Cidade, Cargo, CalculoSalario e Funcionario
        Cidade novaCidade = new Cidade();
        Cargo novoCargo = new Cargo();
        CalculaSalario meuSalario = new CalculaSalario();
        Funcionario novoFuncionario = new Funcionario();

        Scanner dadosMenu = new Scanner(System.in);

        int opcao = 1;

        while (opcao > 0) {
            System.out.println("-------------------------------------");
            System.out.println("-----------------MENU----------------");
            System.out.println("-------------------------------------");
            System.out.println("------------- 0 SAIR ----------------");
            System.out.println("--------------1 CADASTRO ------------");
            System.out.println("-------------------------------------");

            opcao = dadosMenu.nextInt();

            Scanner dados = new Scanner(System.in);

            System.out.println("Informe a Matricula do Funcionário: ");
            int dadosMatricula = dados.nextInt();
            System.out.println("Informe o Nome do Funcionário: ");
            String dadosNome = dados.nextLine();
           
             //  outros ..

            // Preenchendo os Atributos de Cidade e Cargo
            novaCidade.setNomeCidade(dadosCidade);
            novaCidade.setUf(dadosUf);
            novoCargo.setNomeCargo(dadosCargo);

            //Preenchendo os Atributos do Funcionario
            novoFuncionario.setCidade(novaCidade);
            novoFuncionario.setCargo(novoCargo);
            novoFuncionario.setCodigoFuncionario(dadosMatricula);
            novoFuncionario.setNomeFuncionario(dadosNome);
            novoFuncionario.setEndereco(dadosEndereco);
            novoFuncionario.setBairro(dadosBairro);
            novoFuncionario.setCep(dadosCep);
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            try {
                novoFuncionario.setDataNasc(sdf.parse(dadosData));
            } catch (Exception e) {
            }
            novoFuncionario.setSalario(dadosSalario);
            meuSalario.CalculaSalario(novoFuncionario);

            novoFuncionario.setCargo(novoCargo);
            novoFuncionario.setCidade(novaCidade);

            novoFuncionario.mostraInformacao();
        }
        
    }
}
public class CalculaSalario implements Serializable {

    public void CalculaSalario(Funcionario f) {

    }

    double getInss(double salario) {
        if (salario <= 911.70) {
            double salarioInss = (salario * 0.8) + salario;
        }
        if (salario >= 911.71 && salario <= 1519.50) {
            double salarioInss = (salario * 0.9) + salario;
        }
        if (salario >= 1519.51 && salario <= 3038.99) {
            double salarioInss = (salario * 0.11) + salario;
        }else {
             double salarioInss = salario + 334.28;
        }

        return salario;
    }

    void  getLiquido(double salario){
       double salarioFinal = this.getInss(salario) - salario;
       salario = salarioFinal + salario;
    }

}
public class Cargo implements Serializable{

    private String nomeCargo;

    public String getNomeCargo() {
        return nomeCargo;
    }

    public void setNomeCargo(String nomeCargo) {
        this.nomeCargo = nomeCargo;
    }

    @Override
    public String toString() {
        return getNomeCargo();
    }

}
public class Cidade implements Serializable{

    private String nomeCidade;
    private String uf;

    public String getNomeCidade() {
        return nomeCidade;
    }

    public void setNomeCidade(String nomeCidade) {
        this.nomeCidade = nomeCidade;
    }

    public String getUf() {
        return uf;
    }

    public void setUf(String uf) {
        this.uf = uf;
    }

    @Override
    public String toString() {
        return getNomeCidade();
    }

}
public class Funcionario implements Serializable{

    private int codigoFuncionario;
    private String nomeFuncionario;
    private String endereco;
    private String bairro;
    private String cep;
    private Date dataNasc;
    private double salario;
    private Cargo cargo;
    private Cidade cidade;

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public Cargo getCargo() {
        return cargo;
    }

    public void setCargo(Cargo cargo) {
        this.cargo = cargo;
    }

    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    public Cidade getCidade() {
        return cidade;
    }

    public void setCidade(Cidade cidade) {
        this.cidade = cidade;
    }

    public int getCodigoFuncionario() {
        return codigoFuncionario;
    }

    public void setCodigoFuncionario(int codigoFuncionario) {
        this.codigoFuncionario = codigoFuncionario;
    }

    public Date getDataNasc() {
        return dataNasc;
    }

    public void setDataNasc(Date dataNasc) {
        this.dataNasc = dataNasc;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getNomeFuncionario() {
        return nomeFuncionario;
    }

    public void setNomeFuncionario(String nomeFuncionario) {
        this.nomeFuncionario = nomeFuncionario;
    }

    public double getSalario() {
        return salario;
    }

    public void setSalario(double salario) {
        this.salario = salario;
    }

    void mostraInformacao(){
        System.out.println("Matricula :" + getCodigoFuncionario());
        System.out.println("Nome      :" + getNomeFuncionario());
        System.out.println("Endereço  :" + getEndereco());
        System.out.println("Bairro    :" + getBairro());
        System.out.println("CEP       :" + getCep());
        System.out.println("Data      :" + getDataNasc());
        System.out.println("Salário   :" + getSalario());
        System.out.println("Cargo     :" + getCargo().getNomeCargo());
        System.out.println("Cidade    :" + getCidade().getNomeCidade());
        System.out.println("UF        :" + getCidade().getUf());
    }

}

4 Respostas

marcelo.bellissimo
Na sua classe main você chama isso:
meuSalario.CalculaSalario(novoFuncionario);
E na sua classe CalculaSalario, tem isso:
public class CalculaSalario implements Serializable {  
   
     public void CalculaSalario(Funcionario f) {  
   
     }

Ou seja?

adriano_si

Cara, estás precisando estudar os conceitos de Java

1 - Você não criou um construtor CalculaSalario, estude esse conceito de construtores e perceba a diferença de um Constutor CalculaSalario para o método VOID CalculaSalario que você criou;

2 - Seus métodos liquido e INSS devem retornar somente os valores do novo salário, em seu método getInss você está fazendo o cálculo do salário, retire esse cálculo de lá e coloque em um método novo chamado calcularSalario(double salario){…} que será o metodo responsável pelo seu cálculo… Mas perceba uma coisa, você deve guardar em algum lugar o valor liquido e o INSS pago… Pense um pouco e você saberá responder onde esses valores podem ficar guardados.

Faça as mudanças acima e poste apenas as mudanças que realizar pra galera ir te ajudando…

Bons estudos…

PS: se possível, mude o título do seu tópico, vai te ajudar a conseguir ajuda… eu mesmo entrei aqui só pra esculachar, até que ví que o tópico está bem formulado. Resumindo, sintetize no tópico, qual o seu problema com a linguagem.

_DK_

Bom pessoal mudei e parece que funcionou.

A Classe CalculaSalário ficou assim com as alterações.

public class CalculaSalario implements Serializable {

    private Funcionario func;

    public CalculaSalario(Funcionario f) {
    this.func = f;
    }

    double getInss() {
        if (func.getSalario() <= 911.70) {
            return  (func.getSalario() * 0.8) + func.getSalario();

        }
        if (func.getSalario() >= 911.71 && func.getSalario() <= 1519.50) {
            return  (func.getSalario() * 0.9) + func.getSalario();
        }
        if (func.getSalario() >= 1519.51 && func.getSalario() <= 3038.99) {
            return  (func.getSalario() * 0.11) + func.getSalario();
        }else {
             return func.getSalario() + 334.28;
        }
    }

    public double  getLiquido(){
       return  func.getSalario() - getInss();
 
    }

    public void mostraInformacaoSalario(){
        System.out.println("Salário Liquido :" + getLiquido());
        System.out.println("INSS : " + getInss());
    }

}

E no main ..

CalculaSalario meuSalario = new CalculaSalario(novoFuncionario);

            novoFuncionario.mostraInformacao();
            meuSalario.mostraInformacaoSalario();

----------------------------------------------------------
adriano_si

Estou estudando com as apostilas Caelum FJ11 e Futuramente a FJ21

O que recomenda para iniciantes?

adriano_si
_DK_:
Bom pessoal mudei e parece que funcionou.

A Classe CalculaSalário ficou assim com as alterações.

public class CalculaSalario implements Serializable {

    private Funcionario func;

    public CalculaSalario(Funcionario f) {
    this.func = f;
    }

    double getInss() {
        if (func.getSalario() <= 911.70) {
            return  (func.getSalario() * 0.8) + func.getSalario();

        }
        if (func.getSalario() >= 911.71 && func.getSalario() <= 1519.50) {
            return  (func.getSalario() * 0.9) + func.getSalario();
        }
        if (func.getSalario() >= 1519.51 && func.getSalario() <= 3038.99) {
            return  (func.getSalario() * 0.11) + func.getSalario();
        }else {
             return func.getSalario() + 334.28;
        }
    }

    public double  getLiquido(){
       return  func.getSalario() - getInss();
 
    }

    public void mostraInformacaoSalario(){
        System.out.println("Salário Liquido :" + getLiquido());
        System.out.println("INSS : " + getInss());
    }

}

E no main ..

CalculaSalario meuSalario = new CalculaSalario(novoFuncionario);

            novoFuncionario.mostraInformacao();
            meuSalario.mostraInformacaoSalario();

----------------------------------------------------------
adriano_si

Estou estudando com as apostilas Caelum FJ11 e Futuramente a FJ21

O que recomenda para iniciantes?

Perfeito, estás no caminho certo... Recomendo depois das 2, Use a Cabeça e o livro da Certificação, estude como se fosse tirar a certificação, mesmo que não vá fazê-la...

Abs []

Criado 22 de novembro de 2010
Ultima resposta 22 de nov. de 2010
Respostas 4
Participantes 3