今天做题的时候发现的一个小问题。。。
我想要输入一个数字之后再输入一行字符串,但是发现输入的字符串不对劲,或者说是会少一个。
我的代码如下:
Scanner in=new Scanner(System.in);
int n=in.nextInt();
in.nextLine();
for(int i=0;i<n;i++){
String[] parts=in.nextLine().split(" ");
String ch=parts[0];
String parent=parts[1];
}
注意在第三行处我又写了一个nextLine(),这样下面才能正常地输入。
这涉及到了nextInt() 方法和nextLine()方法的消息处理机制了,当nextInt()读取到回车符或者换行的时候,就会停止且拿走前面的数据,但不会读取'\n'
,因此会留下来一个回车符或者换行。而nextLine()方法读取到换行就会结束,所以就相当于还没有开始就结束了。
解决方法:
- 可以在nextInt()后面添加一个nextLine()
- 或者都用nextLine()