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

Dúvida no Ex. 1 da Aula 5 - Modificadores de acesso

Estou recebendo mensagem de erro e não consigo resolver. Funcionario.java:23: error: cannot return a value from method whose result type is void return this.salario; ^ Funcionario.java:39: error: 'void' type not allowed here System.out.println(f1.getSalario()); ^ 2 errors

class Funcionario {
    Cliente titular;
    String cpf;
    String rg;
    private double salario;
    double valeLimiteSalario;
    String dataEntrada;    

    public void sacaVale(double valeLimite) {
        if(valeLimite >= valeLimiteSalario) {
            System.out.println("Vale Negado");
        } else {
            this.salario = this.salario - valeLimite;
                System.out.println("Vale aceito");                
        }
    }    
        public void getSalario() {
            return this.salario;        
        }

}
class Cliente {
    String nome;
    String endereco;
}
class Testa {
    public static void main(String[] args) {
        Funcionario f1 = new Funcionario();

        f1.valeLimiteSalario = 500.0;

        f1.sacaVale(300.0);

        System.out.println(f1.getSalario());
        }
}
7 respostas
solução!

Olá Roberto! O erro no seu codigo é devido ao seu método getSalario (). Veja bem, o correto de um método getter é ter o retorno de acordo com o tipo da variavel que ele deve retornar, ou seja, o correto de seu código deveria ser:

public double getSalario() { return this.salario; }

Um método assinado com void significa que não retorna nenhum valor. Assim, um método assinado com void nâo deve ter nenhum return.

Enfim, espero ter ajudado. Bons Estudos!

Era isso mesmo, valeu. Mas apareceu outro problema eu criei outro metodo que é o ganhoTotalAnual e adicionei a variavel salario = 1200; e quando ele faz o calculo ele não imprime nada.

class Funcionario {
    private double salario = 1200.0;    
    double valeLimiteSalario;
    int totalGanhoAnual;

public void ganhoTotalAnual(int  totalAnual) {
            this.salario = this.salario * totalAnual;
                System.out.println("Salario total anual  R$ " + this.salario);
        }
}

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

        f1.valeLimiteSalario = 500.0;

        f1.sacaVale(700.0);

        f1. ganhoTotalAnual = 12;

        f1.imprime();
        }
}

Olá Roberto!! Pelo que vi aqui sua classe funcionario não possui o método imprime(). Caso você não tenha mandado a classe completa, por favor, envie o seu código da classe Funcionario novamente com o método imprime para eu dar uma olhada e ver porque não está sendo impresso.

O código é o mesmo do primeiro que enviei.

class Funcionario {
    Cliente titular;
    String cpf;
    String rg;
    private double salario = 1200.0;    
    double valeLimiteSalario;
    int totalGanhoAnual;    
    String dataEntrada;    

    void imprime() {        
        System.out.println("Salario a receber final do Mês: " + getSalario()+"0");                
    }

    public void totalGanhoAnual(double totalAnual) {
            if(this.salario <= this.salario * totalAnual) {
                System.out.println("Salario total anual  R$ " + this.salario);
            }
        }

    public void sacaVale(double valeLimite) {
        if(valeLimite > valeLimiteSalario) {
            System.out.println("Vale Negado");
        } else {
            this.salario = this.salario - valeLimite;
                System.out.println("Vale de R$" + valeLimite + "0" + " aceito");                        
        }

    }    
        public double getSalario() {
            return this.salario;            
        }



}
class Cliente {
    String nome;
    String endereco;
}
class Testa {
    public static void main(String[] args) {
        Funcionario f1 = new Funcionario();

        f1.valeLimiteSalario = 500.0;

        f1.sacaVale(700.0);

        f1.totalGanhoAnual = 12;

        f1.imprime();
        }
}

Olá Roberto! tem certeza que não está funcionando? Eu testei seu código aqui e funcionou perfeitamente, imprimindo no console a seguinte informação:

Vale Negado
Salario a receber final do Mês: 1200.00

Ele imprime Vale negado e o salario a receber, mas não imprime o totalGanhoAnual que seria o Salario total anual R$ 14400.

Acabei resolvendo a questão de imprimir o totalGanhoAnual. O brigado pela ajuda

class Funcionario {
    Cliente titular;
    String cpf;
    String rg;
    private double salario = 1200;    //adicionei um valor à variavel
    double valeLimiteSalario;
    private double tga;             //totalGanhoAnual    
    private double sb = 1200;         //salarioBase - adicionei um valor à variavel
    int anual;                        //total de meses no ano

    String dataEntrada;    

    void imprime() {        
        System.out.println("Salario a receber final do Mês: " + getSalario() + "0");
        System.out.println("Total ganho anual R$ " + getTga() + "0");
    }
    //getTga => total ganho anual
    public double getTga() {
        this.tga = this.sb * this.anual;
        return this.tga;        
    }


    public void sacaVale(double valeLimite) {
        if(valeLimite > valeLimiteSalario) {
            System.out.println("Vale Negado");
        } else {
            this.salario = this.salario - valeLimite;
                System.out.println("Vale de R$" + valeLimite + "0" + " aceito");                        
        }

    }    
        public double getSalario() {
            return this.salario;            
        }        
}
class Cliente {
    String nome;
    String endereco;
}
class Testa {
    public static void main(String[] args) {
        Funcionario f1 = new Funcionario();

        f1.valeLimiteSalario = 500.0;

        f1.sacaVale(400.0);
        f1.anual = 12;

        f1.imprime();
        }
}