黑马程序员技术交流社区

标题: Scanner问题 [打印本页]

作者: 半醉半醒半浮生    时间: 2015-9-8 22:11
标题: Scanner问题
Scanner是一个扫描器,他会对你的输入进行扫描,当你输入后,会按照空格进行分割。比如你输入的是1 2 3
Scanner会将你输入的分割成三个元素,以next开头的方法会读取当前元素,并将指针后移。
nextFloat方法是一个阻塞方法,当你调用nextFloat时,程序会等待你从键盘输入,当你输入按下回车后,Scanner会开始对你的输入进行处理,处理的方式是按照空格进行分割。你第一次输入了一个字符串,此时Scanner中就只有一个元素,调用nextFloat时,如果转型失败就会进入catch语句块,此时Scanner中原来输入的错误字符串仍然存在,且指针仍然指着这个错误的串:
当没有next那句话时,程序会执行catch中的输出语句,并再次执行try中的语句,由于刚刚nextFloat失败,但是Scanner的指针仍然指着刚刚输入的错误串,也就是说Scanner中还有元素没有读完,因此会再次执行nextFloat,进而形成死循环;
当有next时,进入catch后,next会将Scanner的指针后移,在回到try中的nextFloat时,该方法发现Scanner的指针后面没有元素了,因为你本来就只输入了一个字符串,之后后移后,就没有了,因此会阻塞,等待你再次输入。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2