small medium large xlarge

The latest version of the book is P1.0, released 9 months ago. If you've bought a PDF of the book and would like to update it to this version (for free), visit your home page.

By default this page displays the errata for the latest version of the book. If you have a previous version, select it here:

If you've found a new error, please submit it.

  • Typo
  • Tech. error
  • Suggestion
  • Maybe next edition
  • Not a problem
  • Reported in: P1.0 (10-Oct-18)
PDF page: xvii

The word "asses" in the statement "you can use the book as a reference when you asses student code" should probably be "assess".--Dustin Marx

  • Reported in: P1.0 (12-Dec-18)
PDF page: 0
The Javadoc example comment in "Document Using Examples" looks great in the source code, but not so much when rendered as Javadocs... Suggestion: Eith...more...
  • Reported in: P1.0 (09-Aug-18)
Paper page: 10
Reads: "...because we check for message.equals("") first". Should read: "...because message.trim().equals() is evaluated first", or something like tha...more...
  • Reported in: P1.0 (18-Aug-18)
PDF page: 11
The following block of code on this page is intended to check the validity of the given file location if (location == null || Files.isDirectory(loc...more...
  • Reported in: P1.0 (18-Apr-18)
  • Fixed: 21-Apr-18, awaiting book release
PDF page: 33
Of course, I may have done something dumb, but this code gives me an error when I try to run it... It's the "Mission" example from the General sectio...more...
Simon Harrer says: It can't just run on its own. You need to set both, the start and the logbook field. We will delete the usage class for the next edition, it shouldn't be there... Use this to try out the code: class Usage { public static void main(String[] args) { Mission mission = new Mission(); mission.start = LocalDate.of(2011,3,4); mission.logbook = new Logbook(); mission.update("LInUS", "message"); } }
  • Reported in: P1.0 (08-Jun-18)
PDF page: 39

In the context presented, the null check for supplies is superfluous as the variable is initialized during object creation.--Alexander Hetzl

  • Reported in: P1.0 (10-May-18)
PDF page: 47
Paper page: 23

Code is completely incorrect. Braces make no sense whatsoever.--Ken Ballou

Simon Harrer says: I (Simon) checked the solution (right-hand page) of the item "Favor Enums Over Integer Constants" and can't find an issue with the braces - it compiles and reads as expected. I probably have failed to understand your comment. Can you please elaborate a little bit more what you mean? Thanks for your help!
  • Reported in: P1.0 (20-May-18)
Paper page: 83
TransmissionParse.parse() throws NullPointerException if it gets called with null parameter. The reason is that rawMessage is not properly validated b...more...
  • Reported in: P1.0 (04-Aug-18)
Paper page: 87
The books says: "Actually, try with resources is just syntactic sugar ..." This is not entirely true, since it helps a bit more, especially when close...more...
  • Reported in: P1.0 (28-Mar-18)
  • Fixed: 21-Apr-18, awaiting book release
PDF page: 121

"The problem is that toVenus and toMars point to the same object." -> toVenus is should be changed toVenusViaMars.--Mathias Geat

Simon Harrer says: Yes, you are correct. Thanks for the hint. We'll fix this in the next release.
  • Reported in: P1.0 (30-Oct-18)
Paper page: 147

I believe I have found a typo on the bottom of page 147, and think that
.map(Connection::isFree) should be .filter(Connection::isFree)