Estou tendo problemas em declarar a data de entrada depois de fazer as mudanças. Tô meio enferrujado, porque perdi todos os arquivos, e tive que recuperá-los usando os retalhos das respostas. Eu não lembro de tudo, mas pelo que entendi estudando novamente, esse método da resposta não devia ser o suficiente pra inserir a data ao declará-la estilo
Funcionario ford = new Funcionario("Ford Prefect", 60.00);
ford.setDepartamento("Edição");
ford.setEntrada(3,8,1978);
ford.setRG("42424242");
?
Ele dá o erro "actual and formal list differs in lenght".
Tentei criar um void preencheData, mas não funcionou, ele não aceitou de mesma forma. Alguém consegue me jogar uma luz ou me colocar no caminho certo?
Meus códigos estão assim, de forma resumida:
class Funcionario {
private String nome;
private String departamento;
private double salario;
private Data entrada = new Data();
private String RG;
public Funcionario () {
}
public Funcionario(String nome, double salario) {
this.nome = nome;
this.salario = salario;
//...
public void setEntrada(Data entrada) {
entrada = this.entrada;
}
class Data {
int dia;
int mes;
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!");
}
}
private boolean isDataViavel(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 % 4 == 0) {
ultimoDiaDoMes = 29;
} else {
ultimoDiaDoMes = 28;
}
}
if (dia > ultimoDiaDoMes) {
return false;
}
return true;
}
public Data(){
}
String getFormatada(){
return this.dia + "/" + this.mes + "/" + this.ano;
}
}
Funcionario ford = new Funcionario("Ford Prefect", 60.00);
ford.setDepartamento("Edição");
ford.setEntrada(3,8,1978);
ford.setRG("42424242");