Modelação de Matriz

Desenvolvi uma matriz em char com n colunas e n linhas com caracteres de A á Z, e ao atingir Z pode-se inciar com A de novo. Mas queria modelar minha matriz em formato de ‘Z’ .

Como está saindo:

ABCDEFGHIJKLMNO
PQRSTUVWXYZABCD
EFGHIJKLMNOPQRS
TUVWXYZABCDEFGH
IJKLMNOPQRSTUVW
XYZABCDEFGHIJKL
MNOPQRSTUVWXYZA
BCDEFGHIJKLMNOP
QRSTUVWXYZABCDE

E como eu queria que fosse:

ABCDEFGHI
J
K
L
M
N
O
P
Q
R
STUVWXYZAB

como fazer?

Este é meu Codigo:

package PorZLine;

import java.util.Scanner;

public class ProgramaZ {
char letraAtual;

public static void main(String[] args) {

	char lol = 'A';

	Scanner imprint = new Scanner(System.in);
	System.out.print("Digite a letra: ");
	int n = imprint.nextInt();

	char matriz[][] = new char[n][n];

	for (int x = 0; x < n; x++) {
		for (int y = 0; y < n; y++) {
			matriz[x][y] = lol;
			lol++;
			System.out.print(matriz[x][y]);

			if (lol == '[') {
				lol = 'A';
			

			if (x == 0|| x == n - 1 ||y == n - 1000 - x) {
			System.out.println();
			}					   
			
			}
			}
		System.out.println();

	}
	
	

	}

}

Não pode preencher as outras posições com espaço em branco?

@Joao_Collantoni

Posta seu código

Se voce tem certeza que a matriz eh quadrada, fica mais facil (basta ver se a soma do indice de linha e coluna eh igual aa metadate do total de linhas e colunas). Se precisar escalar, o mais facil eh converter para porcentagem (ou outra base comum, como 10):

/**
 * @author itamar
 */
public class ZShape {
    public static final int ROWS = 10;
    public static final int COLS = 10;
    private char[][] array = new char[ROWS][COLS];
    private boolean shouldPrintChar(int row, int col) {
        if (row == 0 || row == ROWS - 1) { // First and last row
            return true;
        }
        // If you're sure it's a square, this is simpler:
        // return (row + col) == ((ROWS + COLS) / 2) - 1;
        // This will scale properly
        return col * 10 / COLS + row * 10 / ROWS == 9; // 9 because it is zero-based
    }
    private void generate() {
        char c = 'A';
        for (int row = 0; row < ROWS; row++) {
            for (int col = 0; col < COLS; col++) {
                array[row][col] = shouldPrintChar(row, col) ? c++ : ' ';
                if (c > 'Z') c = 'A';
            }
        }
    }
    private void print() {
        for (char[] row : array) {
            System.out.println(new String(row));
        }
    }
    public static void main(String... args) {
        ZShape zShape = new ZShape();
        zShape.generate();
        zShape.print();
    }
}

assim : (" ")

?

Aqui mesmo só em uma semana que estou já vi 3 pessoas perguntando a mesma coisa desse exercício de Z, tem um exemplo de como resolver aqui.