当前位置: 首页 > news >正文

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()还没接收输入就直接结束,一定要记住。

http://www.jsqmd.com/news/305162/

相关文章:

  • 2026清洗机网带优质生产厂家推荐:流水线输送网带、流水线输送链板、烘干机网带、烘干输送链板、网带转弯机、网带输送机选择指南
  • unet image Face Fusion日志查看方法?错误排查信息定位技巧
  • GPT-OSS-20B医疗领域尝试:病历摘要生成实验
  • FSMN-VAD适合嵌入式设备吗?算力需求与优化建议
  • Z-Image-Turbo图像生成避坑指南:新手常见错误汇总
  • 如何用Open-AutoGLM实现手机自动化?保姆级部署教程
  • PixelStreamingInfrastructure https
  • Transformer学习笔记(位置编码)
  • 网络安全知识汇总
  • 第二届长城杯初赛 anote
  • 基于STM32单片机火灾报警系统 智能楼宇 烟雾温度火焰防盗无线DIY
  • PyTorch镜像中的Bash/Zsh高亮插件使用体验分享
  • 基于STM32单片机甲醛检测系统 空气质量 智能家居 WIFI物联网成品
  • Z-Image-Turbo图像生成实战:Python启动脚本与输出路径管理指南
  • 实测分享:BSHM人像抠图的真实效果有多强
  • 基于STM32单片机甲醛温湿度烟雾火灾报警 空气质量检测PM2.5 系统
  • 基于STM32单片机红外线感应自动门 液晶显示 自动 手动
  • 基于STM32单片机交流电压电流电能检测系统 电功率 嵌入式DIY成品
  • 基于STM32单片机分贝检测噪音采集 PM2.5 温湿度报警物联网DIY
  • 基于STM32单片机多功能智能头盔 水位防滑 GPS GSM 语音提示
  • 基于STM32单片机恒温箱系统 2路继电器控制 蓝牙
  • 基于STM32单片机教室智能灯控制 光敏 WIFI 语音识别
  • 基于STM32单片机教室智能灯控制 光敏 蓝牙 语音识别
  • 软件测试(二)
  • 大数据领域数据共享的数据集成技术
  • Linux 之 【进程间通信】(消息队列与信号量、Systrm VIPC在内核中数据结构设计)
  • 大模型学习完全指南:3阶9步框架助你高效掌握核心技术_AI大模型高效学习指南
  • 2026年Agent元年:大模型应用工程师50w+年薪学习路线与实战指南,大模型应用工程师年薪50w
  • Linux 之 【进程间通信】(共享内存、ftok、shmget、shmat、shmdt、shctl、IPC相关指令)
  • 如何提高大数据领域数据建模的准确性和可靠性