Eu "buguei o código de alguma forma?"

Eu to tentando resolver o código desse seguinte exercicio

Escreva uma classe Data cuja instância (objeto) represente uma data. Esta classe deverá dispor dos
seguintes métodos:
a. Construtor: define a data que determinado objeto (através de parâmetro), este método verifica se a
data está correta, caso não esteja a data é configurada como 01/01/0001
b. Compara: recebe como parâmetro um outro objeto da Classe data, compare com a data corrente e
retorne:
i. 0 se as datas forem iguais;
ii. 1 se a data corrente for maior que a do parâmetro;
iii. -1 se a data do parâmetro for maior que a corrente.
c. GetDia: retorna o dia da data
d. GetMes: retorna o mês da data
e. GetMesExtenso: retorna o mês da data corrente por extenso
f. GetAno: retorna o ano da data
g. IsBissexto: retorna verdadeiro se o ano da data corrente for bissexto e falso caso contrário
h. Clone: o objeto clona a si próprio, para isto, ele cria um novo objeto da classe Data com os
mesmos valores de atributos e retorna sua referência pelo método

Tava tudo perfeito mas na hora de executar deu ruim e não consigo identificar o erro, porque simplesmente não mostra, olhem os prints, mostra vermelho mas não mostra o que é no código, tudo amarelo mas na aba de cima ao lado do startpage vermelho, não consigo identificar erro nenhum dessa forma, e o codigo não executa por erro de compilação mas eu n vou conseguir identificar erro se não tem, me ajudem por favor

import java.time.LocalDate;
public class Data {
    private int dia;
    private int mes;
    private int ano;
    
    public Data(int dia, int mes, int ano){
       if (dataValida(dia, mes, ano)){
    
      } else {
         this.dia = 1;
         this.mes = 1;
         this.ano = 1;
      }
    }  
    
   /* public boolean dataValida(int dia, int mes, int ano){
       try {
          LocalDate.of(ano, mes, dia);
          return true;
        } catch (Exception e){
          return false; */
        //}
   // } 
    
    public int compara(Data outraData){
       if(this.ano > outraData.ano){
         return 1;
        } else if(this.ano < outraData.ano){
           return - 1;
        } else {
          if (this.mes > outraData.mes){
             return 1;
          } else if(this.mes < outraData.mes){
             return - 1;
          } else {
             if(this.dia > outraData.dia){
                return 1;
             } else if (this.dia < outraData.dia){
                return - 1;
             } else {
                return 0;
             }
          }
        }
    
    }

    public int getDia() {
        return dia;
    }

    public int getMes() {
        return mes;
    }
    
    public String getMesExtenso(){
       String[] mesesExtenso = {"Janeiro ", "Fevereiro ", "Março ", "Abril ", "Maio ",
           "Junho ", "Julho ", "Agosto ", "Setembro ", "Outubro ", "Novembro ",
           "Dezembro"};
           return mesesExtenso[this.mes - 1];
       }

    public int getAno() {
        return ano;
    }
    
    public boolean isBissexto(){
        return (this.ano % 4 == 0 && this.ano % 100 != 0 || this.ano % 400 = 0);//<editor-fold defaultstate="collapsed" desc="comment">
               // || (this. ano % 400 = 0);
        //</editor-fold>
    }
    
    public boolean dataValida(int dia, int mes, int ano){
       try {
          LocalDate.of(ano, mes, dia);
          return true;
        } catch (Exception e){
          return false;
        }
    }
    }

ata data1 = new Data(25, 06, 2022);
Data data2 = new Data(28, 6, 2022);

   System.out.println("Dia: " + data1.getDia());
   System.out.println("Mes: " + data1.getMes());
   System.out.println("Mes por extenso: " + data1.getMesExtenso());
   System.out.println("Ano: " + data1.getAno());
   System.out.println("E bissexto? " + data1.isBissexto());
   
   System.out.println("Comparacao: " + data1.compara(data2));

troque o 400 = 0
por
400 == 0

Tentei mas mesmo assim o codigo não executa de jeito nenhum, o erro é esse parece

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 12 at dever.capgemini.Data.getMesExtenso(Data.java:67) at dever.capgemini.DeverCapgemini.main(DeverCapgemini.java:22)

Aprenda a interpretar a mensagem que aparece no StackTrace:

  • java.lang.ArrayIndexOutOfBoundsException é a classe da exceção que foi lançada;
  • Index -1 out of bounds for length 12 é a mensagem da exceção;
  • at dever.capgemini.Data.getMesExtenso(Data.java:67) é o ponto onde a exceção ocorreu, ou seja, no método getMesExtenso da classe Data, precisamente na linha número 67 do arquivo Data.java.

Se você analisar, vai entender que em alguma situação está tentando acessar a posição -1 do seu array mesesExtenso .
Arrays começam na posição 0.
Tens que rever a lógica do seu método getMesExtenso.