while (in.hasNext()) {
int n = in.nextInt();
in.nextLine();
String str = in.nextLine();
}
如上图所示
首先,Scanner是一个扫描器,它扫描数据都是去内存中一块缓冲区中进行扫描并读入数据的,而我们在控制台中输入的数据也都是被先存入缓冲区中等待扫描器的扫描读取。这个扫描器在扫描过程中判断停止的依据就是“空白符”,空格啊,回车啊什么的都算做是空白符。
也就是说,当用nextInt接收了整数n之后,缓存区会留下一个回车,需要通过in.nextLine()接收掉回车之后,才能正确读取下一行的字符串。