news 2026/7/26 14:58:22

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/7/26 11:17:46

洛谷 P9100 [PA 2020] Miny 题解

这道题难点在于状态设计。考虑线性 DP,设 dpidp_idpi​ 为仅考虑前 iii 个地雷且钦定第 iii 个不引爆的方案数。这样设计的好处在于 iii 前面的地雷一定不会引爆 iii 后面的,从而满足无后效性。 注意需要在左右无穷远处各添加一个爆炸半径无穷大的哨兵地…

作者头像 李华
网站建设 2026/7/21 15:40:32

从零开始学大模型核心:向量嵌入技术完全指南

文章全面介绍了向量嵌入技术在大模型中的应用,包括词嵌入、文档嵌入、多模态嵌入等多种类型,以及向量索引、存储优化和相似度计算等关键技术。文章详细阐述了嵌入与向量数据库的协同关系,以及在大规模语义搜索、推荐系统、异常检测和RAG等场景…

作者头像 李华
网站建设 2026/7/22 17:32:31

双非二程序员的大模型逆袭之路:RAG与Agent技术学习指南

本文探讨双非二本科生在大模型应用开发领域的就业前景,指出尽管学历存在挑战,但行业对RAG和Agent技术人才需求旺盛,更看重实际技术能力而非学历。文章分析了企业招聘要求、薪资前景,并提供了系统学习路径,包括Python编…

作者头像 李华
网站建设 2026/7/22 15:53:28

21点,如何计算胜率高达75%

算法原理低牌(2-6):1分低牌(2-6)在21点中通常对玩家有利,因为它们更可能帮助玩家接近21点(如16218,16319等),而不会轻易导致爆牌。因此,当低牌被打…

作者头像 李华
网站建设 2026/7/25 13:25:12

基于STM32单片机智能药盒 定时定量提醒 GSM短信 蜂鸣器提醒

目录硬件组成功能实现软件设计应用场景扩展功能建议源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!硬件组成 STM32单片机:作为主控芯片,负责协调各模块工作,处理定时、定量逻辑及通信功能。GSM模块&…

作者头像 李华