0
I have this code below in Java that does not compile and I can not find the error. I have already made the targeted modifications and the number of errors has passed to only 1.
The method calculoIdade
and validarData
returns now the type Period
, but when executing still presents type error in the method validarData
.
import java.time.*;
import java.util.*;
public class Data {
private int dia, mes, ano;
String data;
public void validarData() {
if (dia > 0 && dia < 32 && mes > 0 && mes < 13 && ano > 0
&& ((mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12)
|| ((mes == 4 || mes == 6 || mes == 9 || mes == 11) && dia <= 30)
|| (mes == 2 && (dia <= 29 && ano % 4 == 0 && (ano % 100 != 0 || ano % 400 == 0)) || dia <= 28))) {
data = "Data válida";
} else {
data = "Data inválida";
}
}
public Double calculoIdade(int dia,int mes, int ano) {
if (validarData()) {
LocalDate data = LocalDate.of(dia, mes, ano);
LocalDate now = LocalDate.now();
if (ano <= 2020) {
Period diff = Period.between(data, now);
}
} else {
System.out.println("Quantidade de dias excede o total de dias do mês");
}
}
public void main(String[] args) {
Scanner leia = new Scanner(System.in);
System.out.print("Digite o dia: ");
dia = leia.nextInt();
System.out.print("Digite o mês: ");
mes = leia.nextInt();
System.out.print("Digite o ano: ");
ano = leia.nextInt();
System.out.println("Idade: %d anos, %d meses e %d dias", diff.getYears(), diff.getMonths(), diff.getDays());
System.out.println(+dia + "/" + mes + "/" + ano + " " + data);
}
}
After the fixes, the code looked like this:
import java.time.*;
import java.util.*;
public class Main {
private static int dia, mes, ano;
private String data;
private Period diff;
public Period validarData() {
if (dia > 0 && dia < 32 && mes > 0 && mes < 13 && ano > 0
&& ((mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12)
|| ((mes == 4 || mes == 6 || mes == 9 || mes == 11) && dia <= 30)
|| (mes == 2 && (dia <= 29 && ano % 4 == 0 && (ano % 100 != 0 || ano % 400 == 0)) || dia <= 28))) {
data = "Data válida";
} else {
data = "Data inválida";
}
}
public Period calculoIdade(int dia,int mes, int ano) {
if (validarData()) {
LocalDate l = LocalDate.of(dia, mes, ano);
LocalDate now = LocalDate.now();
if (ano <= 2020) {
Period diff = Period.between(l, now);
}
} else {
System.out.println("Quantidade de dias excede o total de dias do mês");
}
}
public void main(String[] args) {
Scanner leia = new Scanner(System.in);
System.out.print("Digite o dia: ");
dia = leia.nextInt();
System.out.print("Digite o mês: ");
mes = leia.nextInt();
System.out.print("Digite o ano: ");
ano = leia.nextInt();
System.out.println("Idade: " + diff.getYears() + " anos, " + diff.getMonths() + " meses, "
+ diff.getDays() + " dias");
System.out.println(+dia + "/" + mes + "/" + ano + " " + data);
}
}
This resulted in only 1 error, as below:
Main.java:24: error: incompatible types: Period cannot be converted
to boolean
if (validarData()) {
^
1 error
What can I do?
Dear @hkotsubo, thank you very much, now it’s worked.
– Tommz