Либо просто добавьте еще один keyboard.nextLine()
перед rep = keyboard.nextLine();
(, чтобы очистить символ новой строки ), либо прочтите значение double gpa с помощью:
double gpa = Double.parseDouble(keyboard.nextLine());
Важно здесь необходимо понять (особенно если вы новичок Java разработчик), почему ваш код не работает, заключается в том, что вы вызываете nextDouble()
в качестве последнего метода на вашем экземпляре Scanner, и он не перемещает курсор на следующую строку .
Немного подробнее:
Все методы имеют шаблон nextX()
(например, nextDouble()
, nextInt()
, et c.), кроме nextLine()
, прочтите следующий введенный вами токен, но если это не новая строка символа, то курсор не перемещается на следующую строку. Когда вы вводите двойное значение и нажимаете Enter
, вы фактически даете входному потоку два токена: двойное значение и символ новой строки , двойное значение инициализируется в переменная, а символ новая строка остается во входном потоке. В следующий раз, когда вы вызовете nextLine()
, будет прочитан этот самый новый строковый символ, и это даст вам пустую строку.