1
resposta

Desafio resolvido

import java.time.LocalDate;
import java.util.Date;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.Callable;

public class Evento {
    public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in);
        int ano_escolhido = 0;
        int mes_escolhido = 0;
        int dia_escolhido = 0;
        int ano_atual = LocalDate.now().getYear();



        while(true){
            try{
                System.out.println("Informe o ano !");
                ano_escolhido = teclado.nextInt();
                if(ano_escolhido!=ano_atual){
                    System.out.println("Inválido ! Apenas 2026 !");
                    continue;
                }

                break;

            }catch (InputMismatchException e){
                System.out.println("Inválido ! Apenas números ");
                teclado.nextLine();
            }
        }while(true){
            try{
                System.out.println("Informe o mês !");
                mes_escolhido = teclado.nextInt();
                if(mes_escolhido<1 || mes_escolhido>12){
                    System.out.println("Apenas meses entre Janeiro e Dezembro (1-12)");
                    continue;
                }

            break;}
            catch (InputMismatchException e){
                System.out.println("Apenas números !");
                teclado.nextLine();


                }}


        while(true){
            try{
                System.out.println("Informe o dia:");
                dia_escolhido = teclado.nextInt();
                if(mes_escolhido==1 || mes_escolhido==3 || mes_escolhido==5 || mes_escolhido==7 || mes_escolhido==8 || mes_escolhido==10 || mes_escolhido==12){
                    while(dia_escolhido>31 || dia_escolhido<1){
                    System.out.println("Apenas dias entre 1-31 !");
                    dia_escolhido = teclado.nextInt();}

            } else if (mes_escolhido==4 || mes_escolhido==6 || mes_escolhido==9 || mes_escolhido==11) {
                    while(dia_escolhido>30 || dia_escolhido<1){
                    System.out.println("Apenas dias entre 1-30 !");
                    dia_escolhido = teclado.nextInt();}

                }else {
                    while(dia_escolhido>28 || dia_escolhido<1){
                        System.out.println("Fevereiro ! Apenas 28 dias !");
                        dia_escolhido = teclado.nextInt();
                    }
                }

                break;}catch (InputMismatchException e){

            }
        }

    LocalDate data_Atual = LocalDate.now();
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/YYYY");
    String atual_formatada = String.valueOf(data_Atual.format(formatter));

    LocalDate data_escolhida = LocalDate.of(ano_escolhido, mes_escolhido, dia_escolhido);
    String escolha_format = String.valueOf(data_escolhida.format(formatter));


        System.out.printf("Data do evento: %S\n", escolha_format);
        System.out.printf("Data de hoje: %S\n", atual_formatada);

   if(data_Atual.isBefore(data_escolhida)){
       System.out.println("O Evento ainda vai acontecer !");

   } else if (data_Atual.isAfter(data_escolhida)) {
       System.out.println("O Evento já aconteceu !");

   }else {
       System.out.println("O Evento é hoje !");
   }


    }
}
1 resposta

Olá, Guilherme! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o LocalDate para comparar datas com Java, utilizou muito bem o DateTimeFormatter para formatar a saída e ainda compreendeu a importância da condicional if/else para verificar se o evento já aconteceu, está por vir ou ocorre no dia atual.

Uma dica interessante para o futuro é aplicar o método isEqual() para deixar o código mais legível ao verificar se duas datas são exatamente iguais. Assim:

import java.time.LocalDate;

public class TesteData {
    public static void main(String[] args) {
        LocalDate hoje = LocalDate.now();
        LocalDate evento = LocalDate.of(2026, 4, 15);

        if (hoje.isEqual(evento)) {
            System.out.println("O Evento é hoje!");
        } else if (hoje.isBefore(evento)) {
            System.out.println("O Evento ainda vai acontecer!");
        } else {
            System.out.println("O Evento já aconteceu!");
        }
    }
}

Isso faz com que a lógica fique mais clara e fácil de manter.

Conteúdos relacionados

Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!