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

Ex 3 - Modificadores de Acesso - dificuldade para fazer Setter na Data

Olá. Não estou entendendo o porque que está dando o erro abaixo: Exception in thread "main" java.lang.Error: nresolved compilation problem: The constructor Data(int, int, int) is undefined at TestaPrograma.main(TestaPrograma.java:29)

Segue o Codigo que tenho. Se puderem me explicar onde estou errando seria de grande ajuda. Obrigado !

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

// Data dataEntrada=new Data();

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

public class Empresa { String nome; String cnpj; Funcionario[] empregados; // Array de Funcionario int livre = 0; //variavel para iniciar o cadastro de Funcionarios

void adiciona (Funcionario func){ this.empregados[this.livre] = func; this.livre++; }

void mostraEmpregados() { for (int i = 0; i < this.livre; i++) { System.out.println("Funcionário na posição: " + i); System.out.println("Nome do Funcionário: " + this.empregados[i].getNome()); System.out.println("R$" + this.empregados[i].getSalario()); } }

boolean contem(Funcionario f) { for (int i = 0; i < this.livre; i++) { if (f == this.empregados[i]) { return true; } } return false; }

}

public class Funcionario { private double salario; //String dataEntrada; String RG; private String nome;

public Data dataEntrada=new Data(); public Data getDataEntrada(){ return this.dataEntrada; } public void setDataEntrada (Data dataEntrada) { this.dataEntrada = dataEntrada; }

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

public double calculaGanhoAnual () { return this.salario += salario * 11; }

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

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

void mostra(){ System.out.println("Nome " + this.nome); System.out.println("Salario " + this.salario); System.out.println("RG " + this.RG); System.out.println("Dia da Admissão " + this.dataEntrada.dia); System.out.println("Data da Admissão " + this.getDataEntrada().getFormatada()); System.out.println("Ganho Anual " + this.calculaGanhoAnual()); } }

public class TestaPrograma {

public static void main(String[] args) {

Empresa empresa = new Empresa(); empresa.empregados = new Funcionario[4];

for (int i = 0; i < empresa.empregados.length; i++) { Funcionario func = new Funcionario(); func.setSalario(1000 + i 100);// = 1000 + i 100; func.setNome ("Func" + i); // = "Func" + i; empresa.adiciona(func); } empresa.mostraEmpregados();

// como a array tem 5 espaços, tenho que abrir um If no metodo adiciona para ñ dar erro !!

Funcionario f = new Funcionario(); f.setNome("func1"); // = "func1";

Funcionario f1 = new Funcionario(); f1.setNome("Eu1"); // = "Eu1"; f1.setSalario(100); f1.RG = "123"; //f1.dataEntrada.preencheData(8, 8, 1986); f1.setDataEntrada(new Data(8, 8, 1986));

Funcionario f2 = new Funcionario(); //f2.nome = "Eu2"; f2.setSalario(2000); f2.RG = "123"; //f2.dataEntrada = "01/01/2011";

Funcionario f3 = new Funcionario(); //f3.nome = "Eu3"; f3.setSalario(3000); f3.RG = "456789"; //f3.dataEntrada = "01/01/2013";

f1.recebeAumento(50); //f1.mostra(); //f1.calculaGanhoAnual();

f2 = f1;

//System.out.println("salario " + f1.salario + " aumento de ");

if(f1 == f2){ System.out.println("salario de f1 e f2 são iguais"); }else{ System.out.println("salario de f1 e f2 são diferentes"); } } }

4 respostas

Olá Rafael!

Como você não formatou seu código usando as dicas que aparecem na barra da direita quando você digita sua resposta, fica muito difícil lê-lo. Porém, não encontrei o construtor da classe Data. Algo assim:

public class Data {

  // declaração dos atributos de classe omitida

  public Data(int dia, int mes, int ano) {
    this.dia = dia;
    this.mes = mes;
    this.ano = ano;
  }
}

Só com esse construtor você conseguirá instanciar uma Data assim:

Data data = new Data(10,10,2014);

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

//Data preencheData = new Data();

public void preencheData (int dia, int mes, int ano) { this.dia = dia; this.mes = mes; this.ano = ano; }

public String getFormatada(){ String data = this.dia + "/"+ this.mes + "/" + this.ano; return data; } }'''

(''') public class Data { int dia; int mes; int ano;

//Data preencheData = new Data();

public void preencheData (int dia, int mes, int ano) { this.dia = dia; this.mes = mes; this.ano = ano; }

public String getFormatada(){ String data = this.dia + "/"+ this.mes + "/" + this.ano; return data; } } (''')

solução!
public class Data {
    int dia;
    int mes;
    int ano;

    //Data preencheData = new Data();

    public void preencheData (int dia, int mes, int ano) {
    this.dia = dia;
    this.mes = mes;
    this.ano = ano;
    }

    public String getFormatada(){
        String data = this.dia + "/"+ this.mes + "/" + this.ano;
        return data;
                }
}