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

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

class Data {
  int dia;
  int mes;
  int ano;

  void preencheData (int dia, int mes, int ano) {
       this.dia = dia;
       this.mes = mes;
       this.ano = ano;
  }
  String getFormatadata() {
    return this.dia + "/" + this.mes + "/" + this.ano;
  }
}

class Funcionario {
      private String nome ;
      private String departamento;
      private Double salario;
      private Data dataEntrada;
      private String rg;

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

      public String getNome() {
         return this.nome;
      }
      public void setDepartamento(String departamento) {
           this.departamento = departamento;
      }
      public String getDepartamento() {
        return this.departamento;
     }
      public void setSalario(double salario) {
           this.salario = salario;
      }
      public Double getSalario() {
        return this.salario;
     }
      public void setDataEntrada(Data dataEntrada) {
           this.dataEntrada = dataEntrada;
      }
      public Data getDataEntrada() {
        return this.dataEntrada;
     }
      public void setRg(String rg) {
           this.rg = rg;
      }
      public String getRg() {
        return this.rg;
     }


      public double getGanhoAnual(int acumuladoAte) {
          return this.salario * acumuladoAte;
      }

      void recebeAumento(double aumento) {
        this.salario = this.salario + aumento;
     }
      void mostra() {
         System.out.println("Nome : " + this.nome);
         System.out.println("Departamento : " + this.departamento);
         System.out.println("Salário : R$ " + this.salario);
         System.out.println("Data de entrada : " + this.dataEntrada.getFormatadata());
         System.out.println("RG : " + this.rg);
         System.out.println("");
      }
}

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

     f1.setNome("Hugo");
     f1.setSalario(100.0);
     f1.setDepartamento("TI");
     f1.setRg("123456");
     f1.setDataEntrada(new Data.preencheData(1, 7, 2009));
     f1.mostra();
  }
}

Ao efetuar o javac TestaFuncionario.java da a seguinte mensagem de error: error: constructor Data inc class Data cannot be applied to given types; f1.setDataEntrada(new Data(1,7,2009));

E se eu trocar f1.setSalario(100.0) para f1.setSalario(100) da a mensagem também

error: incompatible types: int cannot be converted do Double

O que posso fazer?

5 respostas

Laercio , Boa Tarde !

O problema está nesta linha :

f1.setDataEntrada(new Data.preencheData(1, 7, 2009));

onde faltou o () apos o new Data .

neste caso ficaria assim :

f1.setDataEntrada(new Data().preencheData(1, 7, 2009));

espero ter ajudado, Bons estudos

Então a resposta do site esta errada também, como não consegui implementar olhei de lá.

E quanto a esse error aqui: E se eu trocar f1.setSalario(100.0) para f1.setSalario(100) da a mensagem também

error: incompatible types: int cannot be converted do Double

solução!

Laercio ,

a resposta do site não está errada .

a resposta do site está chamando um construtor , diferente do seu código onde está utilizando o construtor default .

no código do site , a classe data deve estar deste jeito :

public class Data {
    private int dia;
    private int mes;
    private int ano;


    public Data(int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
        if (! isDataViavel(dia, mes, ano)) {
            System.out.println("A data " + getFormatada() + " não existe!");
        }
    }

// restante da classe 

}

logo quando faz a inicialização do setDataEntrada é realizado deste jeito.

 f1.setDataEntrada(new Data(1, 7, 2009));

na sua classe data não tem construtor obrigando a passar os valores da data , só um método preencheData , para isso você tem que inicializar a classe Data e chamar o método preenche data com os valores

ficou claro sobre a chamada do método ?

Referente ao outro erro , vou declarou a variável salario com Double

quanto na verdade é com d (minusculo )

repare em seu código:

 private Double salario;

quanto na verdade é :

 private double salario;

existe uma classe em java chamada Double , essa classe é diferente da palavra reservada double ;

é por isso que está dando erro .

Espero ter ajudado Bons Estudos

Certinho, obrigado