You can also use the jColorLogger library to read console input. It allows for both synchronous and asynchronous console input. The latter means you can continue to print to Standard Out and otherwise execute code in any thread while waiting for the user to input text in the console. Also your program won't fail in the IDE (though you won't be able to do console input).