for (int i = Character.MIN_VALUE; i < Character.MAX_VALUE; i++) {
should be
for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; i++) {
That is, the less than should be a less-than-or-equal-to.
p. 429: In the first code fragment
catch (IOexception e) {System.err.println(e);}
should be
catch (IOException e) { System.err.println(e); }
pp. 440-442: The SourceReader program has several bugs. A corrected version is available online.