Duvida em Java

Boa tarde, eu sou novo por aqui e eu estou com uma dificuldade em Java em relação a esse exercício:

https://imgur.com/1HP56mq

É para ficar mais ou menos assim:

Eu fiz do meu jeito, porém o professor não gostou muito pela quantidade de “gambiarras”, se alguém conseguir me ajudar eu agradeço muito.

Como?

Da uma olhada neste tópico

Só olhando o código que vc fez para sabermos como ajudar:

int n;
int indiceDaLetra = 0;

char proximaLetra() {
  char letra = indiceDaLetra + 'A';
  indiceDaLetra = (indiceDaLetra + 1) % ('Z' - 'A' + 1);
  return letra;
}

void imprimirLinha(int linha) {
  if (linha == 0 || linha == n - 1) { // primeira ou ultima linha
    repita(n vezes) {
      System.out.print(proximaLetra());
    }
  } else {
    repita(i até n) {
      if ((n - i - 1) == linha) System.out.print(proximaLetra());
      else System.out.print(' ');
    }
  }
}

void imprimirZ() {
  repita(linha até n) {
    imprimirLinha(linha);
    System.out.println();
  }
}

uma outra versão com apenas um loop

int n;
int indiceDaLetra = 0;

char proximaLetra() {
  char letra = indiceDaLetra + 'A';
  indiceDaLetra = (indiceDaLetra + 1) % ('Z' - 'A' + 1);
  return letra;
}

for (int i = 0, f = n * n; i < f;) {
  if (i < n || i >= f - n || i % (n - 1) == 0)
    System.out.print(proximaLetra());
  else
    System.out.print(' ');
  i += 1;
  if (i % n == 0) System.out.println();
}

[EDIT]

Mais uma versão:

    String r = "";
    
    char[] espacos = new char[n - 2];
    Arrays.fill(espacos, ' ');
    String espaco = new String(espacos);
            
    for (int i = 0; i < 2 * n + n - 2; i++) {
        r += i >= n && i <= 2*n - 2 ? espaco : "";
        r += proximaLetra();
    }
    
    for (int i = 0; i < n; i++) {
        System.out.println(r.substring(i * n, i * n + n));
    }

Tem 2 tópicos já com a resolução desse exercício aqui, Aqui e Aqui. Com 2 códigos feitos de maneiras diferentes e dão o mesmo resultado.