Magic squares

 4 9 2
 3 5 7
 8 1 6

 11 18 25  2  9
 10 12 19 21  3
  4  6 13 20 22
 23  5  7 14 16
 17 24  1  8 15

Let's build a matrix that has a given size and random numbers inside. 

Welcome to DrJava.  Working directory is C:\Users\dgerman
> int[] a
> int b[]
> a = new int[3]
{ 0, 0, 0 }
> a
{ 0, 0, 0 }
> b = new int[5]
{ 0, 0, 0, 0, 0 }

>  

So if int[] a is the same as int a[] 

What is the meaning of int[] a[] 

int[] a says a is going to be an array of integers 

int a[] says the same thing

int a[] says that a[i] is an int

int[] a[] says that a[i] is an int[]

int[] a says a is going to be an array of integers

int[] a[] says that a[i] is an array of integers

An array of arrays can be declared in three different ways: 

  int[] a[]
  int[][] a
  int a[][] 

So that's how you declare a two dimensional structure. 

Allocation is like this: 

  int[][] magic = new int[3][3];

So that gives me a 3x3 matrix of 0's. 

Welcome to DrJava.  Working directory is C:\Users\dgerman
> int[][] a = new int[3][3];
> a
{ { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 } }
> a[0][2] = -1
-1
> a
{ { 0, 0, -1 }, { 0, 0, 0 }, { 0, 0, 0 } }
> a.length
3
> a[0].length
3
> a[2][1] = 1
1
> a
{ { 0, 0, -1 }, { 0, 0, 0 }, { 0, 1, 0 } }
> a[a.length - 1][a[a.length - 1].length/2] = 9
9
> a
{ { 0, 0, -1 }, { 0, 0, 0 }, { 0, 9, 0 } }
> int row = a.length - 1;
> row
2
> int col = a[row].length / 2
> row
2
> col
1
> a[row][col] = -10
-10
> a
{ { 0, 0, -1 }, { 0, 0, 0 }, { 0, -10, 0 } }


--

public class Example {
  public static void main (String[] args) {
    int size = Integer.parseInt(args[0]); 
    int[][] m = new int[size][size]; 
    for (int row = 0 ; row < size ; row = row + 1 ) {
      for (int col = 0; col < size; col = col + 1) { 
        if (row == 0 || 
            row == size-1 || 
            col == 0 || 
            row == size/2 && col < size/2) {
          m[row][col] = 1; 
        }
      }
    }
    Example.show(m); 
  }
  public static void show(int[][] a) {
    for (int row = 0 ; row < a.length ; row = row + 1 ) {
      for (int col = 0; col < a[row].length; col = col + 1) { 
        System.out.print(" " + a[row][col]); 
      }
      System.out.println(); 
    }
  }
}

--


Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> int a
> a
0
> a = 3
3
> a
3
> int[] a
> a = new int[10]
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
> a
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
> ArrayList<Integer> b
Static Error: Undefined class 'ArrayList'
> import java.util.ArrayList; // auto-import
ArrayList<Integer> b
> b
null
> b = new ArrayList<Integer>()
[]
> b
[]
> b.add(3)
true
> b
[3]
> b.add(1)
true
> b
[3, 1]
> b.add(5)
true
> b
[3, 1, 5]
> b.size()
3
> b.remove(0)
3
> b
[1, 5]


--

Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> ArrayList<Integer> a = new ArrayList<Integer>()
Static Error: Undefined class 'ArrayList'
> import java.util.ArrayList; // auto-import
ArrayList<Integer> a = new ArrayList<Integer>()
> a
[]
> a.add(1)
true
> a
[1]
> a.add(2)
true
> a
[1, 2]
> a.add(4)
true

> a
[1, 2, 4]
> a.add(2, 3)
> a
[1, 2, 3, 4]


--

public class Example {
  public static void main (String[] args) {
    int size = Integer.parseInt(args[0]); 
    char[][] m = new char[size][size]; 
    for (int row = 0 ; row < size ; row = row + 1 ) {
      for (int col = 0; col < size; col = col + 1) { 
        if (row == 0 || 
            row == size-1 || 
            col == 0 || 
            row == size/2 && col < size/2) {
          m[row][col] = '*'; 
        }
      }
    }
    Example.show(m); 
  }
  public static void show(char[][] a) {
    for (int row = 0 ; row < a.length ; row = row + 1 ) {
      for (int col = 0; col < a[row].length; col = col + 1) { 
        System.out.print(" " + a[row][col]); 
      }
      System.out.println(); 
    }
  }
}

--

public class Example {
  public static void main (String[] args) {
    int size = Integer.parseInt(args[0]); 
    char[][] m = new char[size][size]; 
    for (int row = 0 ; row < size ; row = row + 1 ) {
      for (int col = 0; col < size; col = col + 1) { 
        if (row + col == size/2 || 
            row == size/2 && col <= 2 * size / 3 ||  
            col == size/2 && row >= size/3 ) { 
          m[row][col] = '*'; 
        } else { 
          m[row][col] = ' ';  
        }
      }
    }
    Example.show(m); 
  }
  public static void show(char[][] a) {
    for (int row = 0 ; row < a.length ; row = row + 1 ) {
      for (int col = 0; col < a[row].length; col = col + 1) { 
        System.out.print(" " + a[row][col]); 
      }
      System.out.println(); 
    }
  }
}

--

Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> import java.util.ArrayList
> ArrayList<Integer> a
> ArrayList<int> a
Static Error: Type has incompatible bounds
> ArrayList<char> a
Static Error: Type has incompatible bounds
> ArrayList<Character> a
> ArrayList<Integer> a
> ArrayList<ArrayList<Integer>> a 
> ArrayList<Integer> row
> row = new ArrayList<Integer>()
[]
> row
[]
> row.add(3)
true
> row.add(1)
true
> row.add(2)
true
> row
[3, 1, 2]
> a
null
> a = new ArrayList<ArrayList<Integer>>() 
[]
> a.add(row)
true
> a
[[3, 1, 2]]
> row = new ArrayList<Integer>()
[]
> row
[]

> row.add(6)
true
> row.add(9)
true
> row.add(4)
true
> row
[6, 9, 4]
> a
[[3, 1, 2]]
> a.add(row)
true
> a
[[3, 1, 2], [6, 9, 4]]
> row = new ArrayList<Integer>()
[]
> row.add(8)
true
> row.add(7)
true
> row.add(5)
true
> row
[8, 7, 5]
> a
[[3, 1, 2], [6, 9, 4]]
> a.add(row)
true
> a
[[3, 1, 2], [6, 9, 4], [8, 7, 5]]


--