1. public class Counter {
      private int val;
    
      public Counter() {
        reset();
      }
    
      public void count() {
        val++;
      }
    
      public void reset() {
        val = 0;
      }
    
      public int readValue() {
        return val;
      }
    }
  2. public static void main(String[] args) {
      if (args.length != 1) {
        System.out.println("Ange ett filnamn som programargument");
        return;
      }
      File fil = new File(args[0]);
      Scanner scanner = null;
    
      try {
        scanner = new Scanner(fil);
    
        Counter countOdd = new Counter();
        Counter countEven = new Counter();
    
        while (scanner.hasNext()) {
          int x = scanner.nextInt();
          if (x % 2 == 0) { // even number
            countEven.count();
          } else {  // x % 2 == 1, odd number
            countOdd.count();
          }
        }
    
        System.out.println("Filen innehåller " + countOdd.readValue() + " udda tal" +
                           " och " + countEven.readValue() + " jämna tal.");
      } catch (FileNotFoundException e) {
        System.out.println("Filen existerar inte.");
      } catch (InputMismatchException e) {
        System.out.println("Filen ska bara innehålla heltal.");
      } finally {
        if (scanner != null) scanner.close();
      }
    }
  3. public class FinSubset {
    
      public static class SetSizeMismatchException extends RuntimeException {
      }
    
      private boolean[] members;
    
      public FinSubset(int n) {
        members = new boolean[n];
    
        for (int i = 0; i < n; i++) {
          members[i] = false;
        }
      }
    
      public int universeSize() {
        return members.length;
      }
    
      public void add(int x) {
        members[x] = true;
      }
    
      public void remove(int x) {
        members[x] = false;
      }
    
      public boolean isMember(int x) {
        return members[x];
      }
    
      public int size() {
        int s = 0;
        // use enhanced for-loop instead of traditional (seel below) 
        for (boolean m : members) {
          if (m) s++;
        }
        // for (int i = 0; i < members.length; i++) {
        //   if (members[i]) s++;
        // }
        return s;
      }
    
      private void checkUniverseSizes(FinSubset s) {
        if (members.length != s.members.length) {
          throw new SetSizeMismatchException();
        }   
      }
    
      public boolean isSubsetOf(FinSubset s) {
        checkUniverseSizes(s);
    
        for (int i = 0; i < members.length; i++) {
          if (members[i] && !s.members[i]) return false;
        }
        return true;
      }
    
      public FinSubset union(FinSubset s) {
        checkUniverseSizes(s);
    
        FinSubset newSet = new FinSubset(members.length);
        for (int i = 0; i < members.length; i++) {
          if (isMember(i) || s.isMember(i)) {
            newSet.add(i);
          }
        }
        return newSet;
      }
    
      public FinSubset intersection(FinSubset s) {
        checkUniverseSizes(s);
    
        FinSubset newSet = new FinSubset(members.length);
        for (int i = 0; i < members.length; i++) {
          if (isMember(i) && s.isMember(i)) {
            newSet.add(i);
          }
        }
        return newSet;
      }
    
    }
  4. Se föregående kod.

  5. private static FinSubset readSet(File fil) {
      Scanner scanner = null;
      FinSubset s = null;
    
      try {
        scanner = new Scanner(fil);
    
        int n = scanner.nextInt();
    
        s = new FinSubset(n);
    
        while (scanner.hasNext()) {
          int x = scanner.nextInt();
          s.add(x);
        }
      } catch (FileNotFoundException e) {
        System.out.println("Filen existerar inte.");
      } finally {
        if (scanner != null) scanner.close();
      }
    
      return s;
    }
    
    public static void main(String[] args) {
      FinSubset s1 = readSet(new File(args[0]));
      FinSubset s2 = readSet(new File(args[1]));
      FinSubset s3 = s1.intersection(s2);  // or s2.intersection(s1)
    
      PrintWriter writer = null;
      try {
        writer = new PrintWriter(new File(args[2]));
    
        writer.print(s3.universeSize() + " ");
    
        for (int i = 0; i < s3.universeSize(); i++) {
          if (s3.isMember(i)) {
            writer.print(i + " ");
          }
        }
    
      } catch (FileNotFoundException e) {
        System.out.println("Couldn't open output file.");
      } finally {
        if (writer != null) writer.close();
      }
    } 
  6. public class Point {
      private double x, y;
    
      public Point() {
        x = y = 0.0;
      }
    
      public Point(double x, double y) {
        this.x = x;
        this.y = y;
      }
    
      public Point(Point p) {
        x = p.x;
        y = p.y;
      }
    
      public double getX() {
        return x;
      }
    
      public double getY() {
        return y;
      }
    
      public void setX(double x) {
        this.x = x;
      } 
    
      public void setY(double y) {
        this.y = y;
      } 
    
      public void translate(double dx, double dy) {
        x += dx;
        y += dy;
      }
    
      public void rotate(Point center, double angle) {
        double relx = x - center.x;
        double rely = y - center.y;
        double cos = Math.cos(angle);
        double sin = Math.sin(angle);
        x = center.x + relx * cos + rely * sin;
        y = center.y + rely * cos - relx * sin;
      }
    
      public boolean equals(Point p) {
        return x == p.x && y == p.y;
      }
    } 
  7. public class Line {
      Point p1, p2;
    
      public Line(Point p1, Point p2) {
        this.p1 = new Point(p1);
        this.p2 = new Point(p2);
      }
    
      public boolean equals(Line l) {
        return p1.equals(l.p1) && p2.equals(l.p2) ||
               p2.equals(l.p1) && p1.equals(l.p2);
      }
    
      public double length() {
        double dx = p1.getX() - p2.getX();
        double dy = p1.getY() - p2.getY();
        return Math.sqrt(dx * dx + dy * dy);
      }
    
      public Point[] getPoints() {
        Point[] points = new Point[2];
        points[0] = new Point(p1);
        points[1] = new Point(p2);
        return points;
      }
    }