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

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

Olá, obtendo diversos erros e se alguém puder me ajudar eu ficaria muito grato. Os erros obtidos são:
-empresa2.java:60: error: incompatible types: possible lossy conversion from double to int
-empresa2.java:64: error: incompatible types: unexpected return value
-empresa2.java:68: error: incompatible types: unexpected return value
-empresa2.java:72: error: incompatible types: unexpected return value
class Empresa2{
    String nome;
    int cnpj;
    int contador = 0;
    Funcionarios2[] funcionarios;

    void adiciona(Funcionarios2 f){
        this.funcionarios[this.contador] = f;
        contador ++;
    }


    boolean contem(Funcionarios2 f){
        for(int i = 0; i<this.contador; i++){
            if(this.funcionarios[i] == f){
                return true;
            }
        } 
        return false;
    }


    void imprimeSalarioFuncionarios(){
        for(int i = 0 ; i<this.funcionarios.length; i++){
            if(this.funcionarios[i]==null) continue;
            System.out.println("o funcinario " + i + " ganha " + this.funcionarios[i].getSalario());
        }
    }



    void mostraTodasInformacoes(){
        for(int i = 0 ; i<this.funcionarios.length; i++){
            if(this.funcionarios[i]==null) continue;
            System.out.print("o funcinario " + i + " ganha " + this.funcionarios[i].getSalario());
            if(this.funcionarios[i].getRg() == 0){
                System.out.print(" Rg nao cadastrado ");
            } else{
                System.out.print("o RG do funcinario " + i + " é " + this.funcionarios[i].getRg());
                }
            if(this.funcionarios[i].getNome() == null){
                System.out.print(" nome nao cadastrado ");
            } else{ 
                System.out.println("o nome do funcionario " + i + " é " + this.funcionarios[i].getNome());
                }
            System.out.println(" ");
        }
    }
}



class Funcionarios2{
    private String nome;
    public int rg;
    private int salario;

    public void setSalario(double valor){
        this.salario = valor; /linha 60
    }    

    public void getSalario(){
        return this.salario;  /linha 64
    }

    public void getRg(){
        return this.rg;  /linha 68
    }

    public void getNome(){
        return this.nome;  /linha 72
    }
}

Muito Obrigado.

3 respostas
solução!

Oi Lucas

empresa2.java:60: error: incompatible types: possible lossy conversion from double to int

repare que o método setSalario recebe um double valor, e coloca dentro de um int salario. O erro é pra te avisar que, como double é maior que int, não cabe! (você perderia as casas decimais). Basta mudar o atributo salario pra double.

-empresa2.java:64: error: incompatible types: unexpected return value

O problema aqui é que o seu método getSalario() está declarado com void, e isso indica que ele não vai retornar nada. Mas na verdade, você quer retornar o salario, portanto o tipo de retorno tem que ser do mesmo tipo que o atributo salário (que atualmente está int, mas eu sugeri mudar pra double)

-empresa2.java:68: error: incompatible types: unexpected return value

A mesma coisa que o anterior. O RG é do tipo int, então o método precisa retornar int, e não void.

public int getRg(){
    return this.rg;  /linha 68
}

-empresa2.java:72: error: incompatible types: unexpected return value

mesma coisa, mas como nome é uma string, o método tem que retonar uma string, e não void.

Ou seja, sempre que um método está dando return em algum valor, você precisa declarar o retorno do método com esse valor. Void é usado pra indicar quando o método não retorna nada.

Lucas, não deixe de marcar a resposta do Rodrigo como solução, caso ela tenha saciado sua dúvida, para os outros alunos que tiverem dúvidas similares à sua!

Obrigado ajudou demais. Desculpa a demora para marcar como solução, eu só consegui entrar hoje.