【JAVA】Scanner.next()与Scanner.nextLine()的区别
参考链接
1、next()方法
-
next()方法在遇到有效字符前所遇到的空格、tab键、enter键都不能当作结束符,next()方法会自动将其去掉;
-
只有当next()方法遇到有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符
-
所以next()不能得到带有空格的字符串,只能得到部分字符串(空格前面的)。
2、nextLine()方法
-
nextLine()方法的结束符是Enter键,即nextLine()方法返回的是Enter键之前的所有字符串
-
所以nextLine()方法可以获取到带有空格的字符串。
再加一个辨析
-
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();
END
分类:
语言Java|py|c
标签:
java
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现