java中Scanner类对象方法nextLine()和nextInt()的小问题
在做一次老师布置的作业中,我发现了这样的一个小问题,现在分享给你们。
你们觉得上面的输入方式有没有问题,如果你觉得没有问题,那么恭喜你,和我入了一样的坑,运行,将会出现下图现象。
可以看到,再输入第二个同学数据的时候,学号我没有输入,程序自己直接跳过,它应该是在某个地方读取了某个字符,导致我们没有输入直接进行下一个。当我们把nextLine()方法换成next()方法后,发现不会出现一点问题。我们都知道nextLine()方法是读取一行,到回车结束,而next()方法遇到空格就会结束。我们有理由相信nextLine()方法结束的原因是在某个地方读取到了空格字符。那这个空格字符从哪来的呢?
经过进一步的观察发现,只有在使用同一个Scanner类的对象,且nextInt()方法在nextLine()方法的前一次调用,就会出现上面的这个状况,也就是是说在Scanner类对象用nextInt()方法从键盘读取了一个数据后,且此对象·下一次调用的是nextLine()方法时,它会自动的在某个地方加入空格,这是最简单的介绍,还有可能涉及更深层次的原因,这里我就不说,我也不懂!,啊哈哈哈哈哈!
希望大家明白这个小问题!少跳坑!