This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
After the call to nextDouble, the pointer is at the end of the line, before the line break. So when you call nextLine() it returns the string that is between that place and the next line break -- an empty string! Next you try to get numbers from the scanner but it sees the word "first" which of course can't be parsed as an int.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com