Тут всё довольно просто. Нам запрашиваем написать число, мы вводим 1 и нажимаем enter. Получается строка "1\n" ("\n" появилась из - за того, что мы нажали enter).
Из "1\n" командой in.nextInt() берётся '1'. Так "1\n" превращается в "\n". Затем in.nextLine() не начинает ждать, пока пользователь что - то введёт, так как ещё есть необработанные данный (та самая "\n", которая осталась от "1\n"). Он берёт из оставшейся строки "\n" всё, что находится до символа '\n'. В нашем случае до '\n' ничего не находится, и in.nextLine() возвращает "".
Если раскомментировать in.nextLine(), то из буфера будет убрана мешающая "\n" и при следующем вызове in.nextLine() система будет ожидать ввода пользователя, так как вся информация обработана и её in буфер чист.
in.nextLine(), который у вас закомментирован, то сразу поймёте ответ на ваш вопрос. – Sergey Gornostaev Oct 06 '17 at 12:43