hasNext()的用法

2022-01-23  本文已影响0人  可以叫我小崔

P

1.迭代器原理

1.当创建完成指向某个集合或者容器的Iterator对象时,这时的指针其实指向的是第一个元素的上方,即指向一个 空

2.当调用hasNext方法的时候,只是判断下一个元素的有无,并不移动指针

3.当调用next方法的时候,向下移动指针,并且返回指针指向的元素,如果指针指向的内存中没有元素,会报异常。

4.remove方法删除的元素是指针指向的元素。如果当前指针指向的内存中没有元素,那么会抛出异常。

2.用法

Scanner scan=new Scanner(System.in);

此句表示从控制台获取数据。

scan.hasNext()表示是否有输入数据。

while语句快表示当你输入数据的时候,就执行输出scan.next()

所以只要你输入数据了,它就可以执行

所以后台只是开了一块内存,一直未关闭,不算死循环。

示例代码:

运行结果

首先hasnext()方法阻塞等待用户输入,输入“马云 强东 化腾”后按回车,hasnext()方法返回true进入循环,next()方法指针不断下移读取完后光标仍在闪烁,等待用户再次输入,无法跳出循环运行 System.out.println(“输入完成”)。

结果解释

调用hasnext()方法时如果当前scanner对象的迭代器(iterator)指针指向的下一个字符串值为空(不是判断当前指针指向的值,而是判断下一个值是否为空)则阻塞此方法等待用户输入,用户输入完后返回true,指针不会下移。如果当前scanner对象的迭代器(iterator)指针指向的下一个字符串值不为空则立即返回true,不会等待用户输入。

hasnext()方法永远不会返回false,因为如果scanner对象的迭代器(iterator)指针的下一个字符串值为空时会阻塞此方法继续等待用户输入。

解决方法:

如果想要通过hasnext()方法结束输入需要用到hasnext带参数的一个重载方法。

修改后的代码

用“#”号当结束条件

运行结果

上一篇下一篇

猜你喜欢

热点阅读