java.util.Scanner跳过输入请求

CBe*_*nni 2 java java.util.scanner

我正在尝试使用java.util.Scanner以下方式接收输入:

Scanner scanner = new Scanner(System.in);
int bla = scanner.nextInt();
String blubb = scanner.nextLine();
Run Code Online (Sandbox Code Playgroud)

但是nextLine()命令只是被跳过并返回一个空字符串.我怎么解决这个问题?

Mar*_*ers 10

nextInt方法不会消耗整数后面的新行字符,因此当您调用nextLine它时,只需在整数后面读取新行字符.

如果你有这个输入:

42\n
foo\n
Run Code Online (Sandbox Code Playgroud)

readInt调用消耗42但不是新行字符:

\n
foo\n
Run Code Online (Sandbox Code Playgroud)

现在当你调用readLine它时会消耗第一行的其余部分,它只包含新的行字符.

尝试丢弃整数后的其余部分:

int bla = scanner.nextInt();
scanner.nextLine(); // Discard the rest of the line.
String blubb = scanner.nextLine();
Run Code Online (Sandbox Code Playgroud)

或者nextLine始终使用读取每一行,然后自己将字符串解析为整数:

String blaString = scanner.nextLine();
int bla = Integer.valueOf(blaString);
String blubb = scanner.nextLine();
Run Code Online (Sandbox Code Playgroud)