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));
}