Use the Scanner class's nextLine() method to read the full line that includes any characters like spaces.

Can you explain where you are having the problem and show the data that was read?

Is the problem with mixing the use of the nextInt() method and the nextLine() method? nextInt() leaves the lineend char in its buffer which must be cleared by calling nextLine() BEFORE the next line can be read by nextLine().

The BufferedReader works great if you are just reading in a string of values and don't intend to do any sort of special parsing. In the event you would like to parse or do any sort of manipulation, then generally a Scanner is the way to go. Now, there is a third major way of input (as of JDK 7) which is the Console class, and aims to be more platform friendly...however it is safe to bet that either Scanner or BufferedReader are safe choices. It just depends on the purpose once again.