欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java Scanner类中next()和nextLine()方法的区别

程序员文章站 2022-04-08 11:49:23
今天在练习中遇到了调用Scanner类中的nextLine()输入字符串自动跳过的问题,在博客上看了两篇解答,原来是nextLine()误认了前面next()输入时的Enter,但还是想了一会儿才弄清楚,这里再做个小总结。1.在next()和nextLine()方法连用时,nextLine()会在刚 ......

今天在练习中遇到了调用scanner类中的nextline()输入字符串自动跳过的问题,在博客上看了两篇解答,原来是nextline()误认了前面next()输入时的enter,但还是想了一会儿才弄清楚,这里再做个小总结。

1.在next()和nextline()方法连用时,nextline()会在刚刚输入时就误认了前面next()结束输入的enter,因此还没等输入就直接结束了;

2.那么为什么反过来nextline()在前、next()在后,next()就没有这个问题呢?
这是因为next()方法在输入时要遇到一个有效字符后再遇到enter才会结束,因此当它刚输入就遇到enter是不会结束的,也就可以继续输入了。

3.解决方法:如果一定要用nextline(),可以在nextline()前再添加一个nextline()用于回收enter,这样下一个nextline()就可以正常输入了。
例如: scanner s = new scanner(system.in);
      string str1 = s.next();
      string str2 = s.nextline(); //用于回收enter
      string str3 = s.nextline();