hasNextLine() hasNext() nextLine 三者的理解

hasNextLine() hasNext() nextLine

个人的小理解,记事本写的,格式很差,如有阅读,不胜感激

Scanner中
hasNext() 和next()不能识别空格换行这些操作,如果在hasNext()中利用这些判断,相当于没输入还是处于阻塞状态,当然这时用next()接收的话也识别不到这些换行和空格,如果用hanNext()判断nextLine()接收的话会把这些换行和空格也输出来,因为这是这一次的所有输入。
假设在一个控制台输入中,你调用一个输入,那么在这个代码前控制台中所有的数据(包括空格换行等各种输入)都是最近的这一个输入命令代码所能接收到的,而具体接收并且得到的结果取决于你用的是next()还是nextLine(),next()是从这个控制台中除了空格和换行之外的第一个数值开始识别,到遇到第一个分隔符或结束符时结束扫描(空格和换行符)。并且不会把这两种符号扫描出来,他们还会留在控制台中,所有,当你先用next再用nextLine时就会导致,nextLine读取的是换行符或者空格符,导致你的第二个输入没有达到自己想要的结果,(这是因为,你在控制台输入信息的时候,如果是用next扫描输入完数据后使用空格符就会让下一个使用nextLine接收的时候多接受一个空格符,如果是输入完数据后使用换行符,就会让下一个使用nextLine接收的时候接收到换行符,然后直接结束,相当于扫描到了一个空行。)nextLine可以扫描一行内容作为字符串而被获取到,换行符就是区分每一行的符号,如果扫描一个空行意思就是说,这一次只扫描了一个换行符(\n),就会直接结束,所有就会遇到上面的情况hasNext()和hasNextLine()也可以读取控制台上的数据,不过hasNext()和hasNextLine()相当于是复制数据,next和nextLine相当于剪切数据,后者在扫描数据的时候会将光标随着扫描的进度向后移动,这样后面的再来读取的时候就会跟着他们扫描结束的位置开始读取,后面的都必然是从空格和换行符开始,当然如果用NextLine的话结束的时候会把换行符接收,后面的读取时就和第一个读取一样。而前者是不会移动光标的,这样就导致他们扫描的时候仅仅是得到对应的值,但是数据还是留在控制台上,后面的方法来扫描的时候,还是从头开始。
nextInt()等和next的性质相识,区别就是一个扫描的字符串类型,其他的是各种基本数据类型。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值