MODULE 6 - SHEET 1


public class PersonalData
 { public static void main(String[] args)
    { Person[] p = {new Person("George",  34, 1.71f),
                    new Person("Betty",   22, 1.76f),
                    new Person("Charles", 24, 1.79f),
                    new Person("Hanna",   29, 1.66f),
                    new Person("Edward",  23, 1.82f),
                    new Person("Frida",   28, 1.77f),
                    new Person("Davina",  33, 1.69f),
                    new Person("Andrew",  25, 1.67f)};
      sort(p);
    }

   private static void sort(Person[] p)
    { for (int k=1; k<p.length; k++)
       { int i = k;
         while (i > 0  &&  p[i-1].compare(p[i]))
          { Person t = p[i-1];
            p[i-1] = p[i];
            p[i] = t;
            i--;
          }
       }
      for (int i=0; i<p.length; i++)
         System.out.println(p[i]);
    }
 }

class Person
 { private String name;
   private int age;
   private float height;

   public Person(String n, int a, float h)
    { this.name = n;
      this.age = a;
      this.height = h;
    }

   public boolean compare(Person that)
    { return (this.age > that.age);
    }

   public String toString()
    { return fmtString(this.name,9) + this.age + "  " + this.height;
    }

   private String fmtString(String s, int d)
    { while (s.length() < d)
         s = s + " ";
      return s;
    }
 }


MODULE 6 - SHEET 2

public class ChineseRings { private static final int NRINGS = 4; private static int line = 0; public static void main(String[] args) { remove(NRINGS); System.out.println(); } private static void remove(int n) { if (n>0) { remove(n-2); printOut(n,"off"); replace(n-2); remove(n-1); } } private static void replace(int n) { if (n>0) { replace(n-1); remove(n-2); printOut(n, "on "); replace(n-2); } } private static void printOut(int n, String s) { System.out.print(fmtInt(n,3) + " " + s); line++; if (line%10 == 0) System.out.println(); } private static String fmtInt(int n, int d) { String s = String.valueOf(n); while (s.length() < d) s = " " + s; return s; } } public class Cross16 { public static void main(String[] args) { int l = 0x0F0F0F; int r = 0xF0F0F0; int n = 0x123456; int L = (n&l) << 4; int R = (n&r) >> 4; n = L | R; System.out.println("n is " + Integer.toHexString(n)); } }

MODULE 6 - SHEET 3

public class ListExample { public static void main(String[] args) { Link start = new Link(16); start.put(8); start.put(4); start.put(64); start.put(32); System.out.println("List elements: " + start); System.out.println("Element sum: " + start.sum()); } } class Link { private int val; private Link next; public Link(int n) { this.val = n; this.next = null; } public void put(int k) { if (this.next == null) this.next = new Link(k); else this.next.put(k); } public String toString() { if (this.next == null) return this.val + ""; else return this.val + " " + this.next.toString(); } public int sum() { return this.val + (this.next == null ? 0 : this.next.sum()); } } // The toString() method may be written like the sum() method: // // public String toString() // { return this.val + (this.next == null ? "" : " " + this.next.toString()); // }