栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

无法同时使用Scanner.nextInt()和Scanner.nextLine()[重复]

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

无法同时使用Scanner.nextInt()和Scanner.nextLine()[重复]

问题是

'n'
整数后面的字符。当您调用时
nextInt
,扫描程序会读取
int
,但不会消耗
'n'
其后的字符;而是,它不会占用任何字符。
nextLine
做到这一点。这就是为什么您得到空行而不是预期得到的字符串的原因。

假设您的输入包含以下数据:

12345hello

这是输入缓冲区最初的外观(

^
代表
Scanner
读取下一个数据的位置):

1  2  3  4  5 n h  e  l  l  o n^

之后

nextInt
,缓冲区如下所示:

1  2  3  4  5 n h  e  l  l  o n   ^

第一个

nextLine
消耗
n
,使缓冲区如下所示:

1  2  3  4  5 n h  e  l  l  o n      ^

现在,该

nextLine
呼叫将产生预期的结果。因此,要修复程序,您所需要做的就是向
nextLine
after之后添加另一个调用
nextInt
,并丢弃其结果:

k = in.nextInt();in.nextLine(); // Discard 'n'input = in.nextLine();


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419105.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号