Skipping nextLine() after use nextInt()?

Thats because the Scanner#nextInt method does not read the last newline character of your input, and thus that newline is consumed in the next call to Scanner#nextLine

Workaround:

 

Either fire a blank Scanner#nextLine call after Scanner#nextInt to consume newline

 

int option = input.nextInt();

input.nextLine();  // Consume newline left-over

String str1 = input.nextLine();

Or, it would be even better, if you read the input through Scanner#nextLine and convert your input to integer using Integer#parseInt(String) method.

 

int option = 0;

try {

    option = Integer.parseInt(input.nextLine());

} catch (NumberFormatException e) {

    e.printStackTrace();

}

String str1 = input.nextLine();

You will encounter the similar behaviour when you use Scanner#nextLine after Scanner#next() or any Scanner#nextXXX method for except nextLine itself.