Below is the syntax highlighted version of Spiral.java
from §1.4 Arrays.
/************************************************************************* * Compilation: javac Spiral.java * Execution: java Spiral N * * % java Spiral 4 * java Spiral 4 * 1 * 2 * 3 * 4 * 8 * 12 * 16 * 15 * 14 * 13 * 9 * 5 * 6 * 7 * 11 * 10 * *************************************************************************/ public class Spiral { public static void main(String[] args) { int N = Integer.parseInt(args[0]); // create N-by-N array of integers 1 through N int[][] a = new int[N][N]; for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) a[i][j] = 1 + N*i + j; // spiral for (int i = N-1, j = 0; i > 0; i--, j++) { for (int k = j; k < i; k++) System.out.println(a[j][k]); for (int k = j; k < i; k++) System.out.println(a[k][i]); for (int k = i; k > j; k--) System.out.println(a[i][k]); for (int k = i; k > j; k--) System.out.println(a[k][j]); } // special case for middle element if N is odd if (N % 2 == 1) System.out.println(a[(N-1)/2][(N-1)/2]); } }