今天在练习中遇到了调用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();
如对本文有疑问, 点击进行留言回复!!
Postgresql结合postgis使用java的JDBC连接
网友评论