nextLine() не работает после метода next()

package new_package;

import java.util.Scanner;

public class Test {

public static void main ( String args[])

{
Scanner input = new Scanner(System.in);

System.out.println("Enter a character");

char c = input.next().charAt(0);

System.out.println ( "Enter a string");

String s = input.nextLine();

System.out.println (c);
System.out.println (s); 

}

}

Вывод этой программы после первого выполнения:

Введите символ

И после того, как я ввожу символ c, вывод выглядит так:

Введите символ

c

Введите строку

c

Проблема с этой программой в том, что мне не разрешено вводить строку, которая должна быть введена с помощью следующей строки commend.

Программа автоматически принимает значение "" для строки и печатает свободную строку.

Почему?


person arpansen    schedule 05.12.2014    source источник
comment
Возможный дубликат Сканер пропускает nextLine() после использования next() или nextFoo()?   -  person GBlodgett    schedule 08.03.2019


Ответы (1)


Добавьте nextLine() после next(), чтобы использовать конец строки, содержащей токен, который вы получили, вызвав next(). В противном случае при вызове String s = input.nextLine(); используется конец строки, в результате чего s остается пустым.

char c = input.next().charAt(0);
input.nextLine(); // add this
System.out.println ( "Enter a string");

String s = input.nextLine();
person Eran    schedule 05.12.2014