Welcome to DrJava.  Working directory is C:\Users\dgerman
> 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(3)
true
> a.add(5)
true
> a.add(1)
true
> a.add(7)
true
> a.add(-2)
true
> a.add(-8)
true
> a
[3, 5, 1, 7, -2, -8]
> a.remove(0)
3
> a
[5, 1, 7, -2, -8]


Here's the answer to P6.27

import java.util.*;

public class P627 {
  public static void main(String[] args) {
    ArrayList<Integer> a = new ArrayList<Integer>(); 
    a.add(1); 
    a.add(4); 
    a.add(9); 
    a.add(16); 
    System.out.println( a ); 
    ArrayList<Integer> b = new ArrayList<Integer>(); 
    b.add(9); 
    b.add(7); 
    b.add(4); 
    b.add(9); 
    b.add(11); 
    System.out.println( b ); 
    ArrayList<Integer> c = P627.merge(a, b); 
    System.out.println( c );     
  }
  public static ArrayList<Integer> merge (ArrayList<Integer> a, ArrayList<Integer> b) {
    ArrayList<Integer> result = new ArrayList<Integer>(); 
    if (a == null) {
      if (b == null) return null; 
      else { for (Integer n : b) { result.add( n ); } return result; }
    } 
    // a is an actual array list 
    if (b == null) { for (Integer n : a) { result.add( n ); } return result; } 
    else { // both a and b are actual array lists 
      while (a.size() > 0 || b.size() > 0) {
        // https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html
        // https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#remove-int-
        if (a.size() > 0) 
          result.add(a.remove(0));
        if (b.size() > 0) 
          result.add(b.remove(0));
      }
      return result; 
    }
  }
}

The program compiles and runs as follows:

Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> run P627
[1, 4, 9, 16]
[9, 7, 4, 9, 11]
[1, 9, 4, 7, 9, 4, 16, 9, 11]


Now an exercise due to M. Alexander 

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(0)
true
> a.add(1)
true
> a.add(2)
true
> a.add(3)
true
> a.add(4)
true
> a.add(5)
true
> a
[0, 1, 2, 3, 4, 5]
> a.remove(3)
3
> a
[0, 1, 2, 4, 5]
>

Let's start again:

Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> import java.util.ArrayList; 
ArrayList<Integer> a = new ArrayList<Integer>();
> a.add(6)
true
> a.add(3)
true
> a.add(5)
true
> a.add(0)
true
> a.add(1)
true
> a.add(2)
true
> a
[6, 3, 5, 0, 1, 2]
> a.remove( 2 )
5
> a
[6, 3, 0, 1, 2]
> a.remove( new Integer(1) );
> a
[6, 3, 0, 2]
> a.remove( new Integer(1) )
false
> a.remove( new Integer(0) )
true
> a
[6, 3, 2]
> a.add(5)
true
> a.add(7)
true
> a.add(5)
true
> a
[6, 3, 2, 5, 7, 5]
> a.remove( new Integer(5) )
true
> a
[6, 3, 2, 7, 5]
>
> a.add(4)
true
> a.add(new Integer(4))
true
> a
[6, 3, 2, 7, 5, 4, 4]
>

http://cs.fit.edu/~ryan/cse4051/java-puzzlers/

http://www.javapuzzlers.com/java-puzzlers-sampler.pdf

Other problems written in class between 12:45pm and 2:30pm:

class One {
  public static void main(String[] args) {
    int[] a = {5, 2, 3, 1, 4, 7, 6}; 
    int min = a[0], max = a[0] ;
    for (int e : a) {
      if (e > max) 
        max = e; 
      if (e < min)
        min = e;
    }
    System.out.println( min + " " + max ); 
  }
}

Mark  , Logan  , Daniel , Jared, (Nathan), Trevor, (Austin) 
(Qin) , Walter , Aleksa , Adam , Judy    , Gabriela, Brennan, (James), Jacquelyn 
Nick R, Yiming , Jingzhe, Zac  , Paul    , Morgan, Alex Ong, William 
Lauren, Jack   , MAR    , Grant, Jon

Here's a simple test to make sure in a square array every number is used once. 

class One {
  public static void main(String[] args) {
    int[][] a = {{5, 2, 1}, {4, 3, 6}, {7, 4, 9}};  
    System.out.println( One.check( a ) ); 
  }
  
  public static boolean check(int[][] a) {
    int n = a.length; 
    int[] f = new int[n * n];
    for (int row = 0; row < n; row++) {
      for (int col = 0; col < n; col++) {
        if (a[row][col] > n * n || a[row][col] <= 0) return false; 
        f[a[row][col]-1]++;
        System.out.println( "Looking at " + a[row][col] ); 
        System.out.println( java.util.Arrays.toString(  f ) );         
        if (f[a[row][col]-1] > 1)
          return false;         
      }
    }
    return true; 
  }
}

--