code: public class Blah {
  
    public static void main(String[] args) {
      print2dArray(getSpiralArray(5));
    }
  
    public static int[][] getSpiralArray(int dimension) {
      int[][] spiralArray = new int[dimension][dimension];
  
      int numConcentricSquares = (int) Math.ceil((dimension) / 2.0);
  
      int j;
      int sideLen = dimension;
      int currNum = 0;
  
      for (int i = 0; i < numConcentricSquares; i++) {
        // do top side
        for (j = 0; j < sideLen; j++) {
          spiralArray[i][i + j] = currNum++;
        }
  
        // do right side
        for (j = 1; j < sideLen; j++) {
          spiralArray[i + j][dimension - 1 - i] = currNum++;
        }
  
        // do bottom side
        for (j = sideLen - 2; j > -1; j--) {
          spiralArray[dimension - 1 - i][i + j] = currNum++;
        }
  
        // do left side
        for (j = sideLen - 2; j > 0; j--) {
          spiralArray[i + j][i] = currNum++;
        }
  
        sideLen -= 2;
      }
  
      return spiralArray;
    }
  
    public static void print2dArray(int[][] array) {
      for (int[] row : array) {
        for (int elem : row) {
          System.out.printf("%3d", elem);
        }
        System.out.println();
      }
    }
  }
  