Estou com dificuldades em implementar a validação de data no meu código. Tentei de varias maneiras mas não sei como passar os parâmetros de forma correta. Alguém poderia me ajudar?
TestaEmpresa.java:4: error: constructor Data in class Data cannot be applied to given types; private Data dataDaEntrada = new Data(); ^ required: int,int,int found: no arguments reason: actual and formal argument lists differ in length 1 error
Segue minhas classes:
class Funcionario {
private String nome;
private String rg;
private Data dataDaEntrada = new Data();
private String departamento;
private double salario;
public Funcionario () {
}
public Funcionario (String nome) {
this.nome = nome;
}
public String getNome() {
return this.nome;
}
public void setRg(String rg) {
this.rg = rg;
}
public String getRg() {
return this.rg;
}
public void preencheDataDaEntrada(int dia,int mes, int ano) {
this.dataDaEntrada.imprimeData(dia, mes, ano);
}
public void setDepartamento(String departamento) {
this.departamento = departamento;
}
public String getDepartamento() {
return this.departamento;
}
public void recebeAumento(double valor) {
this.salario += valor;
}
public double getGanhoAnual() {
return this.salario * 12;
}
public void setSalario(double valor) {
this.salario = valor;
}
public double getSalario() {
return this.salario;
}
public void mostra() {
System.out.println("");
System.out.println("Nome: " + getNome());
System.out.println("RG: " + getRg());
System.out.println("Departamento: " + getDepartamento());
System.out.println("Salário R$: " + getSalario());
System.out.println("Ganho Anual: " + getGanhoAnual());
System.out.println("Data de entrada: " + this.dataDaEntrada.getFormatada());
}
}
class Empresa {
private String nome;
private String cnpj;
private String endereco;
private Funcionario[] empregados;
int count = 0;
public Empresa (int tamanhoDoArray){
this.empregados = new Funcionario [tamanhoDoArray];
}
public void setNome (String nome) {
this.nome = nome;
}
public String getNome () {
return this.nome;
}
public void setCnpj (String cnpj) {
this.cnpj = cnpj;
}
public String getCnpj () {
return this.cnpj;
}
public void setEndereco (String endereco) {
this.endereco = endereco;
}
public String getEndereco () {
return this.endereco;
}
public Funcionario getFuncionario (int posicao) {
return this.empregados[posicao];
}
public void adiciona (Funcionario f) {
this.empregados[this.count] = f;
this.count++;
}
public boolean contem(Funcionario f) {
for (int i = 0; i < this.empregados.length; i++) {
if (f == this.empregados[i]) {
return true;
}
}
return false;
}
public void mostraTodasAsInformacoes() {
for (int i = 0; i < this.empregados.length; i++) {
if (this.empregados[i] != null) {
System.out.println("");
System.out.println("Funcionário na posição: " + i);
this.empregados[i].mostra();
}
}
}
}
class Data {
private int dia;
private int mes;
private int ano;
public void imprimeData (int dia, int mes, int ano){
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
public Data(int dia, int mes, int ano) {
this.dia = dia;
this.mes = mes;
this.ano = ano;
if (! dataViavel(dia, mes, ano)) {
System.out.println("A data " + getFormatada() + " não é válida!");
}
}
private boolean dataViavel(int dia, int mes, int ano) {
if (dia <= 0 || mes <= 0) {
return false;
}
int ultimoDiaDoMes = 31; // por padrao são 31 dias
if (mes == 4 || mes == 6 || mes == 9 || mes == 11 ) {
ultimoDiaDoMes = 30;
} else if (mes == 2) {
if ((ano % 400 == 0) || ((ano % 4 == 0) && (ano % 100 != 0))) {
ultimoDiaDoMes = 29;
} else {
ultimoDiaDoMes = 28;
}
}
if (dia > ultimoDiaDoMes) {
return false;
}
return true;
}
public String getFormatada() {
return this.dia + "/" + this.mes + "/" + this.ano;
}
}
public class TestaEmpresa {
public static void main (String [] args) {
Empresa empresa = new Empresa(10);
Funcionario f = new Funcionario("Vitor");
f.setRg ("25.889.335-2");
f.setDepartamento ("RH");
f.setSalario (1000);
f.preencheDataDaEntrada (29,2,2016);
empresa.adiciona (f);
Funcionario f1 = new Funcionario("Carlos Augusto dos Santos");
f1.setRg ("478.886.345-7");
f1.setDepartamento ("SME");
f1.setSalario (3000);
f1.preencheDataDaEntrada (29,2,1900);
empresa.adiciona(f1);
Funcionario f2 = new Funcionario ("Rodrigo Cordeiro");
f2.setRg ("38.463.551-1");
f2.setDepartamento ("Diretoria");
f2.setSalario (10000);
f2.preencheDataDaEntrada (31,11,1998);
empresa.adiciona(f2);
empresa.getFuncionario(0).mostra();
empresa.getFuncionario(1).mostra();
empresa.getFuncionario(2).mostra();
}
}