news 2026/6/12 21:15:43

Java中使用Scanner类的next()和nextLine()常见的几个陷阱

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java中使用Scanner类的next()和nextLine()常见的几个陷阱

在JavaSE阶段的学习里,在练习一些知识点时,经常需要使用Scanner来在控制台输入内容

但是在使用的过程中,会遇到一些坑。对于Scanner,以下的几点一定要知道!

1、next()会把空格当做结束符。所以你使用next()来接收用户的输入时,如果输入的内容里有空格,那next()遇到空格就会认为输入结束了,导致你输入的数据它只会接收空格之前的内容,而空格之后的内容不会被接收。如果这个next()后还有其他接收输入的话,那空格之后的内容会自动被下一个接收输入的而接收

比如:假如你使用next()来接收输入的字符串,包含空格,且这个next()输入之后紧跟了一个类似nextInt()这种接收数字的输入的话,会导致报错。因为next()只接收空格之前的内容,那空格之后字符串内容就会被下一个nextInt()接收到,而nextInt()接收字符串的话,肯定报错的。

所以,记住,简单来说就是:输入内容会有空格的话,不要使用next(),应该使用nextLine()

2、next()只会接收输入的内容本身,而你输入完敲的回车,这个回车不会被它接收

所以你使用next()输入内容后,敲了“回车”,实际上这个“回车”符会被留在缓存中

所以如果在next() 后你的代码又紧跟了nextLine(),那nextLine()就会把上一个next()“残留的”回车接收到,导致这个nextLine()还没接收到用户的输入,就直接结束了。所以这一点你不知道的话,就会让你感觉很疑惑。

并且,nextInt()、nextLong()、nextFloat()这些也会有这个问题

所以!这个点一定要注意,简单来说就是:next()、nextInt()、nextLong()、nextFloat()这些后边不要跟nextLine(),不然残留的回车会被紧跟的nextLine()吃掉,导致nextLine()还没接收输入就直接结束,一定要记住。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 22:36:08

实测分享:BSHM人像抠图的真实效果有多强

实测分享:BSHM人像抠图的真实效果有多强 你有没有遇到过这样的场景:刚拍完一组人像照片,想换背景发朋友圈,结果用修图软件抠了半天,发际线边缘还是毛毛躁躁;或者给电商产品图做精修,人物和背景…

作者头像 李华
网站建设 2026/6/6 9:17:22

基于STM32单片机甲醛温湿度烟雾火灾报警 空气质量检测PM2.5 系统

目录STM32甲醛温湿度烟雾火灾报警系统概述硬件组成软件设计应用场景注意事项源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!STM32甲醛温湿度烟雾火灾报警系统概述 该系统基于STM32单片机设计,集成甲醛、温湿度、烟雾、PM2.…

作者头像 李华
网站建设 2026/6/10 20:04:02

后端开发效率翻倍:IntelliJ IDEA的5个“神级插件

一、GitToolBox:Git协作效率加速器功能概述:增强IDEA原生Git功能,将版本控制操作无缝集成到IDE中,避免频繁切换命令行。 核心作用:实时Blame信息:点击代码行右侧显示最近修改者、提交时间和摘要&#xff0c…

作者头像 李华
网站建设 2026/6/13 0:45:26

1.5万字硬核AI架构指南:从单体智能到系统智能的实战设计

正文开始: 回顾这两年的 AI 发展轨迹,你会发现两条截然不同却又并行不悖的主线: 一条是造脑路线:基础模型层(Foundation Models)的狂奔,各大厂商拼参数、拼算力,目标是通用人工智能…

作者头像 李华