Java Scanner类中next()和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();





免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM