Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

O que pode estar errado?

No meu código abaixo, está dando erro na classe TestaFuncionario, quanto eu tento exibir o Salario com dependentes:

class Funcionario { String nome, departamento, dataEntrada, RG, posicao; double salario;

public void recebeAumento(double valorAumento){ this.salario += valorAumento; } public double calculaGanhoAnual(){ return this.salario 12; } public double numDependentes(double qtdDependentes){ if (qtdDependentes <= 2) { return salario 1.2; } else{ return salario * 1.4; } } } class TestaFuncionario{ public static void main(String[] args){ Funcionario f1 = new Funcionario();

f1.nome = "Luiza"; f1.salario = 1300; f1.recebeAumento(100); f1.numDependentes(2);

System.out.println("Salario aual: " + f1.salario); System.out.println("Ganho anual: " + f1.calculaGanhoAnual()); System.out.println("Salario com dependentes: " + f1.numDependentes); } }

Outra duvida: no metodo numDependentes eu queria que só aceitasse inteiro, pois numero de dependentes quebrado. Porém, para o calculo de "bonificação" do salario por numero de dependentes, tem que q ser double para dar certo. O que eu poderia fazer nesse caso?

Obrigada!

6 respostas

Boa Noite Luiza,

Para compilar você deve declarar a variável numDependentes na classe Funcionario, mas mesmo assim seu código ainda contém alguns erros como falta de multiplicação no calculaGanhoAnual() e no numDependentes()

Espero ter te ajudado.

`````` public class Funcionario { String nome; String departamento; String dataEntrada; String RG; int posicao; int numDependentes; double salario;

public void recebeAumento(double valorAumento) { this.salario += valorAumento; }

public double calculaGanhoAnual() { return this.salario * 12; }

public double numDependentes(double qtdDependentes){ if (qtdDependentes <= 2){ return salario 1.2; } else{ return salario 1.4; } } }

class TestaFuncionario { public static void main(String[] args) { Funcionario f1 = new Funcionario();

f1.nome = "Luiza"; f1.salario = 1300; f1.recebeAumento(100); f1.numDependentes(2);

System.out.println("Salario aual: " + f1.salario); System.out.println("Ganho anual: " + f1.calculaGanhoAnual()); System.out.println("Salario com dependentes: " + f1.numDependentes); } }

```

Acredito que não seja isso, pois mesmo declarando a variável numDependentes o programa não roda:

class Funcionario {
    String nome, departamento, rg, posicao;
    double salario;
    Data dataEntrada;

    public void recebeAumento(double valorAumento){
        this.salario += valorAumento;
    }
    public double calculaGanhoAnual(){
        return this.salario * 12;
    }
    public double numDependentes(double qtdDependentes){ 
        if (qtdDependentes <= 2) { 
            return salario * 1.2; 
        } 
        else{ 
            return salario * 1.4; 
        } 
    }
    public void mostra(){
        System.out.println("Nome: " + this.nome);
        System.out.println("Departamento: " + this.departamento);
        System.out.println("Data de entrada: " + this.dataEntrada);
        System.out.println("RG: " + this.rg);
        System.out.println("Posição: " + this.posicao);
        System.out.println("Salario: " + this.salario);    
        System.out.println("Ganho anual: R$" + this.calculaGanhoAnual());                    
    }
}
class TestaFuncionario{
    public static void main(String[] args){
        Funcionario f1 = new Funcionario();

        f1.dataEntrada = new Data();
        f1.dataEntrada.preencheData(1, 7, 2009);
        f1.nome = "Luiza";
        f1.salario = 1300;
        f1.recebeAumento(100);
        f1.posicao = "Analista";
        f1.departamento = "Sistemas";
        f1.rg = "159753";

        f1.mostra();

        Funcionario f2 = new Funcionario();        
                f1.nome = "Danilo";
            f1.salario = 100;

            Funcionario f3 = f2;

            f2.mostra();
            f3.mostra();

            if (f2 == f3) {
                    System.out.println("iguais");
            } 
        else {
                System.out.println("diferentes");        
            }

    }
}

Desculpa, colocando o código certo:

class Funcionario {
    String nome, departamento, rg, posicao;
    double salario, numDependentes;
    Data dataEntrada;

    public void recebeAumento(double valorAumento){
        this.salario += valorAumento;
    }
    public double calculaGanhoAnual(){
        return this.salario * 12;
    }
    public double numDependentes(double qtdDependentes){ 
        if (qtdDependentes <= 2) { 
            return salario * 1.2; 
        } 
        else{ 
            return salario * 1.4; 
        } 
    }
    public void mostra(){
        System.out.println("Nome: " + this.nome);
        System.out.println("Departamento: " + this.departamento);
        System.out.println("Data de entrada: " + this.dataEntrada);
        System.out.println("RG: " + this.rg);
        System.out.println("Posição: " + this.posicao);
        System.out.println("Salario: " + this.salario);    
        System.out.println("Ganho anual: R$" + this.calculaGanhoAnual());
        System.out.println("Salario por dependentes: " + this.numDependentes);                    
    }
}
class TestaFuncionario{
    public static void main(String[] args){
        Funcionario f1 = new Funcionario();

        f1.dataEntrada = new Data();
        f1.dataEntrada.preencheData(1, 7, 2009);
        f1.nome = "Luiza";
        f1.salario = 1300;
        f1.recebeAumento(100);
        f1.posicao = "Analista";
        f1.departamento = "Sistemas";
        f1.rg = "159753";
        f1.numDependentes(2);
        f1.mostra();

        Funcionario f2 = new Funcionario();        
                f1.nome = "Danilo";
            f1.salario = 100;

            Funcionario f3 = f2;

            f2.mostra();
            f3.mostra();

            if (f2 == f3) {
                    System.out.println("iguais");
            } 
        else {
                System.out.println("diferentes");        
            }

    }
}

O calculo de numDependentes aparece como 0.0.

solução!

Boa noite, Luiza! Como vai?

Pelo que entendi, suas dúvidas são duas:

1) O motivo de aparecer 0.0 para numDependentes;

2) Como garantir que no método numDependentes só seja aceito inteiros;

Correto?

As respostas são:

1) O resultado é 0.0 pq vc está imprimindo o valor do atributo numDependentes que em momento nenhum teve um valor associado a ele. Repare que no código da classe TestaFuncionario não há algo como:

f1.numDependentes = 2;

2) Veja que se vc incluir a linha de código anterior antes de executar a chamada ao método numDependentes vc nem precisará passar valor nenhum para o método, pq o número de dependentes já estará definido! E para garantir que o atributo numDependentes seja inteiro, basta que ele seja declarado como inteiro na classe Funcionario.

int numDependentes;

2.1) (Bônus) Veja o seu método na classe Funcionario:

public double numDependentes(double qtdDependentes)

No ponto 2 já foi visto que não haverá necessidade do parâmetro qtdDependentes. Além disso, pelo que entendi do seu código, vc quer retornar o salário acrescido de uma bonificação com base na quantidade de dependentes, certo? Dessa forma, faz sentido que o nome do método seja algo que deixe claro a tarefa executada pelo seu método. Dar bons nomes bons nomes para classes, atributos, variáveis e métodos é uma boa prática em programação!

Bons estudos!

Obrigada por toda ajuda, Gabriel! Funcionou perfeitamente. Valeu!

Por nada, Luiza!

Sempre que precisar, sinta-se a vontade para postar suas dúvidas aqui!

Bons estudos!