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