java Scanner类中next()、nextInt()以及nextLine()用法


今天,在整理笔记的时候发现一个奇怪的现象:

第一种情况                                

会发现输出结果跟我们想象的有很大的差别,就是控制台还没输入姓名,就已经输出显示了。

原因如下:

Scanner是一个扫描器,我们录取到键盘的数据,先存到缓存区等待读取,它判断读取结束的标示是  空白符;比如空格,回车,tab 等等。

next()方法读取到空白符就结束;

nextLine()读取到回车结束也就是“\r”;

所以没还顺序前测试的时候next()再检测的空格的时候就结束输出了。

修改顺序后遇到的问题就是因为next()读取到空白符前的数据时结束了,然后把回车“\r”留给了nextLine();所以上面nextLine()没有输出,不输出不代表没数据,是接到了空(回车“/r”)的数据。

第二种情况:                                      

 

第三种情况:                          

 

第四种情况:         

 

 第四种情况:如果需要从键盘接收多个字符串,可以把nextLine()放到nextInt()前面,如果实在不行,则在nextInt()后边添加nextLine()方法吸收掉多余的字符串

 综上:二三四种情况都正确,编写程序的时候注意使用顺序就不会出错。

 

 

   

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM