Added chapter 2 answers

...I just tested this and it didn't optimise! :angry:
 
```java
for( int i = 2; i < 100; ++i ) {
  for( int j = 0; j < i / 2; j++ )
    System.out.println(j);
}
```

```assembly
     0: iconst_2      
     1: istore_1      
     2: goto          30
     5: iconst_0      
     6: istore_2      
     7: goto          20
    10: getstatic     #16    // Field java/lang/System.out:Ljava/io/PrintStream;
    13: iload_2       
    14: invokevirtual #22    // Method java/io/PrintStream.println:(I)V
    17: iinc          2, 1
    20: iload_2       
    21: iload_1       
    22: iconst_2      
    23: idiv          
    24: if_icmplt     10
    27: iinc          1, 1
    30: iload_1       
    31: bipush        100
    33: if_icmplt     5
    36: return        
```

It's possible this kind of thing is sometimes optimised away by the JIT, but I had no such luck:
   * Division in conditional:  _113707532_
   * Division to a temporary: _22451690_

Note that I removed the `println`, ran the test multiple times and averaged. I also performed the same test with C++ and it _did_ optimise it correctly. (If you still want it in one line `for( int j = 2, lim = i / 2; j <= lim; ++j )`).