[Ajuda] Matriz Cebola - Java

Boa noite senhores, estou precisando resolver um algoritmo que represente a matriz cebola, porém nao está dando certo, teria como voces darem uma força ai ?

Exemplo da Matriz:

1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1

Meu Código:

public class v01 {
    static int array[][];
    public static void gerarMatriz(int a,int b){
        array = new int[a][b];
    }

    public static void preencherMatriz(int n){
        int i = 0;
        int j = 0;
        int linha = 1;
        int coluna = 1;
        
        int a = n; //linha
        int b = n; //coluna
        int valor = 1;
        int k = 0;

        for (i=0; i<a; i++){
            for(j=0; j<b; j++)
            {
                array[i][j] = 0;
            }
        }
       
        valor = 1;

        for (i = 0; i < Math.ceil((float)a/2); i++){
            for(j = i; j < Math.ceil((float) b/2); j++){        
                array[i][j] = array[linha-i-1][j] = array[i][coluna-j-1] = array[linha-i-1][coluna-j-1] = valor;                
            }
        
            for (k = i+1; k<Math.ceil((float)a/2); k++)
            {
               array[k][i] = array[k][coluna-i-1] = array[linha-k-1][i] = array[linha-k-1][coluna-i-1] = valor;
            }
            
            valor++;
        }
    }
    
    public static void main(String args[]){
        gerarMatriz(5,5);
        preencherMatriz(5);
        for(int i=0;i<5;i++){
            for(int j=0;j<5;j++){
                System.out.print(""+array[i][j]);
            }
            System.out.print("\n");
        }
        
    }
}