scanner.nextline()中文输入时遇到的问题

场景复现

简单源码显示
中文输入法结果
如图,当尝试用scanner读取中文输入时,实际读取到的字符串会出现重复的情况。

官方文档

看了官方文档,
Advances this scanner past the current line and returns the input that was skipped. This method returns the rest of the current line, excluding any line separator at the end. The position is set to the beginning of the next line. Since this method continues to search through the input looking for a line separator, it may buffer all of the input searching for the line to skip if no line separators are present.
大概意思是扫描器(scanner)会读取当前行数据直到回车键,并返回输出当前行。如果没有回车键他将会一直读取。
其实这好像并没有解释当前问题的意思

问题原因(误)

初步猜想是因为没有缓冲流的问题
因为scanner.nextline直接读取的字节流数据,当你在键盘打字的时候,nextline已经读取到了数据,至于为什么会出现这么对称的情况,可能跟电脑自带的输入法有关
提出猜想后的我,兴奋不已,彷佛发现了新大陆。
又是百度又是查文档,忽然发现,nextline里面已经自带了缓冲区!!!
虽然可能也许是缓冲区里面的问题。。但是。这好像并不是解决问题的有效途径

真香警告

无意之中,在网上查到了中文输入法下光标的问题。
于是,在输入姓名和性别的时候,我特意把光标在控制台用鼠标点了一下
它竟然回复正常了!!!!
只留下了在风中凌乱的我。。。。。
此时输出已经完全正常

总结

在你写输入语句时
当你发现你的代码好像并没有什么错误时,很有可能是中文输入法在作怪!
原因可能不仅仅是因为你用中文输入法输入了标点符号,还可能是你的光标位置问题= =!

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值