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();
推荐阅读
-
浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别
-
Javascript中类式继承和原型式继承的实现方法和区别之处
-
Java日期时间API系列9-----Jdk8中java.time包中的新的日期时间API类的Period和Duration的区别
-
Java中成员变量与局部变量的区别、对象类型作为方法的参数和方法的返回值
-
荐 浅谈Java中类和对象的初始化、实例化以及方法重载的底层机制
-
Android中java.math.Math类常用的常量和方法
-
Java中构造方法、空指针异常现象、基本数据类型和引用数据类型作为参数传递的区别
-
Java日期时间API系列30-----Jdk8中java.time包中的新的日期时间API类,减少时间精度方法性能比较和使用。
-
详解Java中方法next()和nextLine()的区别与易错点
-
Java的String类中的startsWith方法和endsWith方法