public static void main(String[] args) { // instantiate some sequences Constant c1 = new Constant(4, 11); Constant c2 = new Constant(4, 0); Constant c3 = new Constant(0, 11); Constant c4 = new Constant(0, 0); Constant c5 = new Constant(4, 88); Constant c6 = new Constant(3, 55); Constant c7 = new Constant(0, -77); Constant c8 = new Constant(10, 22); Delta d1 = new Delta(4, 1, 1); Delta d2 = new Delta(4, 1, -1); Delta d3 = new Delta(0, 1, -1); Delta d4 = new Delta(0, 1, 0); Delta d5 = new Delta(4, 1, 0); Delta d6 = new Delta(3, 21, 1); Delta d7 = new Delta(0, 25, -2); Delta d8 = new Delta(10, 2, 4); Jumble j1 = new Jumble(new int[] {}); Jumble j2 = new Jumble(new int[] {88}); Jumble j3 = new Jumble(new int[] {97, 55}); Jumble j4 = new Jumble(new int[] {199, 198, 197, 196, 195, 194, 193, 192}); Jumble j5 = new Jumble(new int[] {102, 103, 101, 107, 109}); Jumble j6 = new Jumble(new int[] {41, 42, 43, 44}); // do everything twice just to double check for (int i = 0; i < 2; i++) { System.out.print("c1" + ":"); System.out.print(c1); System.out.println(":"); System.out.println( "(Seq)c1 instanceof Constant" + ":" + ((Seq) c1 instanceof Constant) + ":"); System.out.println("(Seq)c1 instanceof Delta" + ":" + ((Seq) c1 instanceof Delta) + ":"); System.out.println("(Seq)c1 instanceof Jumble" + ":" + ((Seq) c1 instanceof Jumble) + ":"); System.out.println("c1.min()" + ":" + (c1.min()) + ":"); System.out.print("c2" + ":"); System.out.print(c2); System.out.println(":"); System.out.println( "(Seq)c2 instanceof Constant" + ":" + ((Seq) c2 instanceof Constant) + ":"); System.out.println("(Seq)c2 instanceof Delta" + ":" + ((Seq) c2 instanceof Delta) + ":"); System.out.println("(Seq)c2 instanceof Jumble" + ":" + ((Seq) c2 instanceof Jumble) + ":"); System.out.println("c2.min()" + ":" + (c2.min()) + ":"); System.out.print("c3" + ":"); System.out.print(c3); System.out.println(":"); System.out.println( "(Seq)c3 instanceof Constant" + ":" + ((Seq) c3 instanceof Constant) + ":"); System.out.println("(Seq)c3 instanceof Delta" + ":" + ((Seq) c3 instanceof Delta) + ":"); System.out.println("(Seq)c3 instanceof Jumble" + ":" + ((Seq) c3 instanceof Jumble) + ":"); System.out.println("c3.min()" + ":" + (c3.min()) + ":"); System.out.print("c4" + ":"); System.out.print(c4); System.out.println(":"); System.out.println( "(Seq)c4 instanceof Constant" + ":" + ((Seq) c4 instanceof Constant) + ":"); System.out.println("(Seq)c4 instanceof Delta" + ":" + ((Seq) c4 instanceof Delta) + ":"); System.out.println("(Seq)c4 instanceof Jumble" + ":" + ((Seq) c4 instanceof Jumble) + ":"); System.out.println("c4.min()" + ":" + (c4.min()) + ":"); System.out.print("c5" + ":"); System.out.print(c5); System.out.println(":"); System.out.println( "(Seq)c5 instanceof Constant" + ":" + ((Seq) c5 instanceof Constant) + ":"); System.out.println("(Seq)c5 instanceof Delta" + ":" + ((Seq) c5 instanceof Delta) + ":"); System.out.println("(Seq)c5 instanceof Jumble" + ":" + ((Seq) c5 instanceof Jumble) + ":"); System.out.println("c5.min()" + ":" + (c5.min()) + ":"); System.out.print("c6" + ":"); System.out.print(c6); System.out.println(":"); System.out.println( "(Seq)c6 instanceof Constant" + ":" + ((Seq) c6 instanceof Constant) + ":"); System.out.println("(Seq)c6 instanceof Delta" + ":" + ((Seq) c6 instanceof Delta) + ":"); System.out.println("(Seq)c6 instanceof Jumble" + ":" + ((Seq) c6 instanceof Jumble) + ":"); System.out.println("c6.min()" + ":" + (c6.min()) + ":"); System.out.print("c7" + ":"); System.out.print(c7); System.out.println(":"); System.out.println( "(Seq)c7 instanceof Constant" + ":" + ((Seq) c7 instanceof Constant) + ":"); System.out.println("(Seq)c7 instanceof Delta" + ":" + ((Seq) c7 instanceof Delta) + ":"); System.out.println("(Seq)c7 instanceof Jumble" + ":" + ((Seq) c7 instanceof Jumble) + ":"); System.out.println("c7.min()" + ":" + (c7.min()) + ":"); System.out.print("c8" + ":"); System.out.print(c8); System.out.println(":"); System.out.println( "(Seq)c8 instanceof Constant" + ":" + ((Seq) c8 instanceof Constant) + ":"); System.out.println("(Seq)c8 instanceof Delta" + ":" + ((Seq) c8 instanceof Delta) + ":"); System.out.println("(Seq)c8 instanceof Jumble" + ":" + ((Seq) c8 instanceof Jumble) + ":"); System.out.println("c8.min()" + ":" + (c8.min()) + ":"); System.out.print("d1" + ":"); System.out.print(d1); System.out.println(":"); System.out.println( "(Seq)d1 instanceof Constant" + ":" + ((Seq) d1 instanceof Constant) + ":"); System.out.println("(Seq)d1 instanceof Delta" + ":" + ((Seq) d1 instanceof Delta) + ":"); System.out.println("(Seq)d1 instanceof Jumble" + ":" + ((Seq) d1 instanceof Jumble) + ":"); System.out.println("d1.min()" + ":" + (d1.min()) + ":"); System.out.print("d2" + ":"); System.out.print(d2); System.out.println(":"); System.out.println( "(Seq)d2 instanceof Constant" + ":" + ((Seq) d2 instanceof Constant) + ":"); System.out.println("(Seq)d2 instanceof Delta" + ":" + ((Seq) d2 instanceof Delta) + ":"); System.out.println("(Seq)d2 instanceof Jumble" + ":" + ((Seq) d2 instanceof Jumble) + ":"); System.out.println("d2.min()" + ":" + (d2.min()) + ":"); System.out.print("d3" + ":"); System.out.print(d3); System.out.println(":"); System.out.println( "(Seq)d3 instanceof Constant" + ":" + ((Seq) d3 instanceof Constant) + ":"); System.out.println("(Seq)d3 instanceof Delta" + ":" + ((Seq) d3 instanceof Delta) + ":"); System.out.println("(Seq)d3 instanceof Jumble" + ":" + ((Seq) d3 instanceof Jumble) + ":"); System.out.println("d3.min()" + ":" + (d3.min()) + ":"); System.out.print("d4" + ":"); System.out.print(d4); System.out.println(":"); System.out.println( "(Seq)d4 instanceof Constant" + ":" + ((Seq) d4 instanceof Constant) + ":"); System.out.println("(Seq)d4 instanceof Delta" + ":" + ((Seq) d4 instanceof Delta) + ":"); System.out.println("(Seq)d4 instanceof Jumble" + ":" + ((Seq) d4 instanceof Jumble) + ":"); System.out.println("d4.min()" + ":" + (d4.min()) + ":"); System.out.print("d5" + ":"); System.out.print(d5); System.out.println(":"); System.out.println( "(Seq)d5 instanceof Constant" + ":" + ((Seq) d5 instanceof Constant) + ":"); System.out.println("(Seq)d5 instanceof Delta" + ":" + ((Seq) d5 instanceof Delta) + ":"); System.out.println("(Seq)d5 instanceof Jumble" + ":" + ((Seq) d5 instanceof Jumble) + ":"); System.out.println("d5.min()" + ":" + (d5.min()) + ":"); System.out.print("d6" + ":"); System.out.print(d6); System.out.println(":"); System.out.println( "(Seq)d6 instanceof Constant" + ":" + ((Seq) d6 instanceof Constant) + ":"); System.out.println("(Seq)d6 instanceof Delta" + ":" + ((Seq) d6 instanceof Delta) + ":"); System.out.println("(Seq)d6 instanceof Jumble" + ":" + ((Seq) d6 instanceof Jumble) + ":"); System.out.println("d6.min()" + ":" + (d6.min()) + ":"); System.out.print("d6" + ":"); System.out.print(d6); System.out.println(":"); System.out.println( "(Seq)d6 instanceof Constant" + ":" + ((Seq) d6 instanceof Constant) + ":"); System.out.println("(Seq)d6 instanceof Delta" + ":" + ((Seq) d6 instanceof Delta) + ":"); System.out.println("(Seq)d6 instanceof Jumble" + ":" + ((Seq) d6 instanceof Jumble) + ":"); System.out.println("d6.min()" + ":" + (d6.min()) + ":"); System.out.print("d7" + ":"); System.out.print(d7); System.out.println(":"); System.out.println( "(Seq)d7 instanceof Constant" + ":" + ((Seq) d7 instanceof Constant) + ":"); System.out.println("(Seq)d7 instanceof Delta" + ":" + ((Seq) d7 instanceof Delta) + ":"); System.out.println("(Seq)d7 instanceof Jumble" + ":" + ((Seq) d7 instanceof Jumble) + ":"); System.out.println("d7.min()" + ":" + (d7.min()) + ":"); System.out.print("d8" + ":"); System.out.print(d8); System.out.println(":"); System.out.println( "(Seq)d8 instanceof Constant" + ":" + ((Seq) d8 instanceof Constant) + ":"); System.out.println("(Seq)d8 instanceof Delta" + ":" + ((Seq) d8 instanceof Delta) + ":"); System.out.println("(Seq)d8 instanceof Jumble" + ":" + ((Seq) d8 instanceof Jumble) + ":"); System.out.println("d8.min()" + ":" + (d8.min()) + ":"); System.out.print("j1" + ":"); System.out.print(j1); System.out.println(":"); System.out.println( "(Seq)j1 instanceof Constant" + ":" + ((Seq) j1 instanceof Constant) + ":"); System.out.println("(Seq)j1 instanceof Delta" + ":" + ((Seq) j1 instanceof Delta) + ":"); System.out.println("(Seq)j1 instanceof Jumble" + ":" + ((Seq) j1 instanceof Jumble) + ":"); System.out.println("j1.min()" + ":" + (j1.min()) + ":"); System.out.print("j2" + ":"); System.out.print(j2); System.out.println(":"); System.out.println( "(Seq)j2 instanceof Constant" + ":" + ((Seq) j2 instanceof Constant) + ":"); System.out.println("(Seq)j2 instanceof Delta" + ":" + ((Seq) j2 instanceof Delta) + ":"); System.out.println("(Seq)j2 instanceof Jumble" + ":" + ((Seq) j2 instanceof Jumble) + ":"); System.out.println("j2.min()" + ":" + (j2.min()) + ":"); System.out.print("j3" + ":"); System.out.print(j3); System.out.println(":"); System.out.println( "(Seq)j3 instanceof Constant" + ":" + ((Seq) j3 instanceof Constant) + ":"); System.out.println("(Seq)j3 instanceof Delta" + ":" + ((Seq) j3 instanceof Delta) + ":"); System.out.println("(Seq)j3 instanceof Jumble" + ":" + ((Seq) j3 instanceof Jumble) + ":"); System.out.println("j3.min()" + ":" + (j3.min()) + ":"); System.out.print("j4" + ":"); System.out.print(j4); System.out.println(":"); System.out.println( "(Seq)j4 instanceof Constant" + ":" + ((Seq) j4 instanceof Constant) + ":"); System.out.println("(Seq)j4 instanceof Delta" + ":" + ((Seq) j4 instanceof Delta) + ":"); System.out.println("(Seq)j4 instanceof Jumble" + ":" + ((Seq) j4 instanceof Jumble) + ":"); System.out.println("j4.min()" + ":" + (j4.min()) + ":"); System.out.print("j5" + ":"); System.out.print(j5); System.out.println(":"); System.out.println( "(Seq)j5 instanceof Constant" + ":" + ((Seq) j5 instanceof Constant) + ":"); System.out.println("(Seq)j5 instanceof Delta" + ":" + ((Seq) j5 instanceof Delta) + ":"); System.out.println("(Seq)j5 instanceof Jumble" + ":" + ((Seq) j5 instanceof Jumble) + ":"); System.out.println("j5.min()" + ":" + (j5.min()) + ":"); System.out.print("j6" + ":"); System.out.print(j6); System.out.println(":"); System.out.println( "(Seq)j6 instanceof Constant" + ":" + ((Seq) j6 instanceof Constant) + ":"); System.out.println("(Seq)j6 instanceof Delta" + ":" + ((Seq) j6 instanceof Delta) + ":"); System.out.println("(Seq)j6 instanceof Jumble" + ":" + ((Seq) j6 instanceof Jumble) + ":"); System.out.println("j6.min()" + ":" + (j6.min()) + ":"); // check a bit more Seq x; x = j3; System.out.print("x" + ":"); System.out.print(x); System.out.println(":"); System.out.println("(Seq)x instanceof Constant" + ":" + ((Seq) x instanceof Constant) + ":"); System.out.println("(Seq)x instanceof Delta" + ":" + ((Seq) x instanceof Delta) + ":"); System.out.println("(Seq)x instanceof Jumble" + ":" + ((Seq) x instanceof Jumble) + ":"); System.out.println("x.min()" + ":" + (x.min()) + ":"); x = d4; System.out.print("x" + ":"); System.out.print(x); System.out.println(":"); System.out.println("(Seq)x instanceof Constant" + ":" + ((Seq) x instanceof Constant) + ":"); System.out.println("(Seq)x instanceof Delta" + ":" + ((Seq) x instanceof Delta) + ":"); System.out.println("(Seq)x instanceof Jumble" + ":" + ((Seq) x instanceof Jumble) + ":"); System.out.println("x.min()" + ":" + (x.min()) + ":"); x = c1; System.out.print("x" + ":"); System.out.print(x); System.out.println(":"); System.out.println("(Seq)x instanceof Constant" + ":" + ((Seq) x instanceof Constant) + ":"); System.out.println("(Seq)x instanceof Delta" + ":" + ((Seq) x instanceof Delta) + ":"); System.out.println("(Seq)x instanceof Jumble" + ":" + ((Seq) x instanceof Jumble) + ":"); System.out.println("x.min()" + ":" + (x.min()) + ":"); } // okay, if you're still not convinced ... Seq b[] = new Seq[8]; b[0] = new Constant(8, 888); b[1] = new Jumble(new int[] {77, 78, 79}); b[2] = new Jumble(new int[] {81, 82}); b[3] = new Delta(4, 5, 1); b[4] = new Jumble(new int[] {}); b[5] = new Jumble(new int[] {10, 1, 2, 3, 4, 5, 10, -1, -2, -3, -4}); b[6] = new Delta(11, 0, 5); b[7] = new Constant(22, 222); for (int k = 0; k < 16; k++) { System.out.print("b[k%8]" + ":"); System.out.print(b[k % 8]); System.out.println(":"); System.out.println( "(Seq)b[k%8] instanceof Constant" + ":" + ((Seq) b[k % 8] instanceof Constant) + ":"); System.out.println( "(Seq)b[k%8] instanceof Delta" + ":" + ((Seq) b[k % 8] instanceof Delta) + ":"); System.out.println( "(Seq)b[k%8] instanceof Jumble" + ":" + ((Seq) b[k % 8] instanceof Jumble) + ":"); System.out.println("b[k%8].min()" + ":" + (b[k % 8].min()) + ":"); } // did you copy Jumble's array? int[] aa = {8, 4, 11}; Jumble jj1 = new Jumble(aa); System.out.print("jj1" + ":"); System.out.print(jj1); System.out.println(":"); System.out.println( "(Seq)jj1 instanceof Constant" + ":" + ((Seq) jj1 instanceof Constant) + ":"); System.out.println("(Seq)jj1 instanceof Delta" + ":" + ((Seq) jj1 instanceof Delta) + ":"); System.out.println("(Seq)jj1 instanceof Jumble" + ":" + ((Seq) jj1 instanceof Jumble) + ":"); System.out.println("jj1.min()" + ":" + (jj1.min()) + ":"); aa[1] = 9999; Jumble jj2 = new Jumble(aa); System.out.print("jj2" + ":"); System.out.print(jj2); System.out.println(":"); System.out.println( "(Seq)jj2 instanceof Constant" + ":" + ((Seq) jj2 instanceof Constant) + ":"); System.out.println("(Seq)jj2 instanceof Delta" + ":" + ((Seq) jj2 instanceof Delta) + ":"); System.out.println("(Seq)jj2 instanceof Jumble" + ":" + ((Seq) jj2 instanceof Jumble) + ":"); System.out.println("jj2.min()" + ":" + (jj2.min()) + ":"); // jj1 shouldn't have been changed System.out.print("jj1" + ":"); System.out.print(jj1); System.out.println(":"); System.out.println( "(Seq)jj1 instanceof Constant" + ":" + ((Seq) jj1 instanceof Constant) + ":"); System.out.println("(Seq)jj1 instanceof Delta" + ":" + ((Seq) jj1 instanceof Delta) + ":"); System.out.println("(Seq)jj1 instanceof Jumble" + ":" + ((Seq) jj1 instanceof Jumble) + ":"); System.out.println("jj1.min()" + ":" + (jj1.min()) + ":"); System.exit(0); }