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");