Next()与NextLine()的细致区分

有时候我在敲代码的时候会发现,我在控制台输入多个字符串时候明明还没有输入完,代码已经开始执行了,我便开始展开了一些研究和理解。

众所周知,next()是遇到空格或者换行符时候停止读取,而nextline()是遇到换行符停止读取,即可以读取空格。

如图所示,我只输入了1+enter+aaa便停止输入开始执行代码并输出了,并且输出结果显示我的字符串a为空。

这种结果的原因是scan.nextInt()并不会读取换行符enter,即此时的读取位置还在1之后,之后执行nextline()读取指令,发现遇到了enter换行符,停止读取,因此字符串a读取了空。

想解决上述问题,很简单,只需要在读取完1之后,加入代码scan.nextLine();单独将换行符读取完之后即可。

具体解释:

上图可以充分显示第7行代码读取时的位置是在控制台输入的1之后,并且还读取了一个空格


那么为什么next()就不会发生上述情况呢?这是因为next()读取方式是从第一个可读字符开始读取的,意思就是,我们在用nextInt()读取完1之后,执行next()时候它会开始寻找字符,不管在这个寻找过程是否遇到了空格或者是换行符等等,它都不管,直到它遇到了下一行的“aaa”便开始读取。

谢谢大家的观看,希望能对大家有帮助呢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值